Position-coding pattern having tag coordinates encoded by bit-shifted subsequences of cyclic position code

ABSTRACT

A substrate having a position-coding pattern disposed on a surface thereof. The position-coding pattern comprises a plurality of tags. Each tag encodes a w-bit subsequence of a cyclic code sequence. The w-bit subsequence maps to a corresponding coordinate codeword for the tag. Adjacent tags contain a w-bit subsequence shifted by one bit relative to each other in the cyclic code sequence.

FIELD OF INVENTION

The present invention relates to a position-coding pattern on a surface.

COPENDING APPLICATIONS

The following applications have been filed by the Applicant with thepresent application:

12/539,589 12/539,597 12/539,599 12/539,603 12/539,605

The disclosures of these co-pending applications are incorporated hereinby reference.

CROSS REFERENCES

The following patents or patent applications filed by the applicant orassignee of the present invention are hereby incorporated bycross-reference.

7,457,961 10/815,635 7,357,323 7,278,727 7,605,940 7,506,168 7,905,4017,721,948 7,457,007 7,204,941 7,593,899 7,423,145 7,122,076 7,156,2896,644,642 6,720,985 7,295,839 6,727,996 7,068,382 7,094,910 7,062,6516,428,155 6,549,935 6,987,573 6,741,871 6,760,119 7,064,851 6,290,3496,474,888 6,785,016 6,831,682 7,263,270 6,965,439 7,663,780 6,870,96610/778,056 6,724,374 6,788,982 7,055,739 6,788,293 6,737,591 7,369,2657,918,404 7,108,192 11/193,482 7,469,062 6,830,196 7,182,247 7,082,5626,957,768 7,170,499 10/492,169 7,762,453 7,359,551 7,444,021 7,308,1487,148,345 8,028,925 11/856,061 12/025,765 7,821,507 6,902,255 12/015,50712/178,611 8,091,792 12/025,762 7,416,280 6,755,509

BACKGROUND

The Applicant has previously described a method of enabling users toaccess information from a computer system via a printed substrate e.g.paper. The substrate has a coding pattern printed thereon, which is readby an optical sensing device when the user interacts with the substrateusing the sensing device. A computer receives interaction data from thesensing device and uses this data to determine what action is beingrequested by the user. For example, a user may make make handwritteninput onto a form or make a selection gesture around a printed item.This input is interpreted by the computer system with reference to apage description corresponding to the printed substrate.

It would desirable to improve the coding pattern printed on thesubstrate so as to maximize usage of images captured by the sensingdevice, whilst still providing a robust error-correcting code. It wouldbe further desirable to minimize visible coloration of the substrate bythe coding pattern.

SUMMARY OF INVENTION

In a first aspect, there is provided a substrate having aposition-coding pattern disposed on a surface thereof, theposition-coding pattern comprising:

a plurality of tags, each tag encoding a w-bit subsequence of a cycliccode sequence, the w-bit subsequence mapping to a correspondingcoordinate codeword for the tag, wherein adjacent tags contain w-bitsubsequences shifted by one bit relative to each other in the cycliccode sequence.

An advantage of this position-pattern described in the first aspect isthat it allows coordinate data to be captured by an optical readerwhilst minimizing the required field of view.

Optionally, the w-bit subsequence is represented by a set of coordinatedata symbols in the tag, each of the coordinate data symbols containingat least one bit of the w-bit subsequence, each coordinate data symbolbeing represented by one or more data elements disposed on the surface.

Optionally, the cyclic code sequence is an m-sequence or a simplex code.

Optionally, the cyclic code sequence has a length n and a dimension k,and wherein: n>w>k. The provision of n>w>k ensures that the code enableserror-detection and error-correction.

Optionally, a given tag contains a w-bit subsequence corresponding tooffset i in the cyclic code sequence, and adjacent tags on either sideof the given tag contain w-bit subsequences corresponding to offsets(i+1) and (i−1) in the cyclic code sequence.

Optionally, the position-coding pattern comprises a plurality of targetelements defining a target grid, the target grid comprising a pluralityof cells, each cell defining a symbol group, wherein neighboring symbolgroups share target elements.

Optionally, each tag is square and contains a plurality of symbolgroups.

Optionally, each coordinate data symbol is a 1-bit symbol such that wcoordinate data symbols represent the w-bit subsequence.

Optionally, the set of coordinate data symbols is arranged in each tagsuch that at any square portion of the position-coding pattern of length(l+q) is guaranteed to contain at least (w−1) bits of the w-bitsubsequence, wherein l is a length of the tag and q is a length or awidth of a coordinate data symbol.

Optionally, each tag contains an x-coordinate codeword mapped from afirst cyclic code sequence and a y-coordinate codeword mapped from asecond cyclic code sequence, the x-coordinate codeword being defined bya first set of x-coordinate data symbols, and the y-coordinate codewordbeing defined by a second set of y-coordinate data symbols.

Optionally, the first set is arranged in subsets of x-coordinate datasymbols and the second set is arranged in subsets of y-coordinate datasymbols.

Optionally, each subset of x-coordinate data symbols is configured as acolumn containing a plurality of the x-coordinate data symbols, and eachsubset of y-coordinate data symbols is configured as a row containing aplurality of the y-coordinate data symbols, wherein each of the rows andcolumns has a maximal width v.

Optionally, the columns of x-coordinate symbols and the rows ofy-coordinate symbols are arranged such that any square portion of theposition-coding pattern of length (l+v) is guaranteed to contain atleast (w−1) bits of a w-bit subsequence in the first cyclic codesequence and at least (w−1) bits of a w-bit subsequence in the secondcyclic code sequence, wherein l is a length of each tag.

Optionally, one ore more of the coordinate data symbols is a merged datasymbol, each merged data symbol being represented by the one or moredata elements, and wherein each merged data symbol encodes at least twoof:

an x-coordinate data symbol from the first set;

a y-coordinate data symbol from the second set; and

at least one further data symbol which is different from the x- andy-coordinate data symbols.

Optionally, the at least one further data symbol is a Reed-Solomonsymbol defining a fragment of a common codeword, the common codewordbeing encoded by a set of Reed-Solomon symbols contained in the tag, thecommon codeword identifying an identity common to a plurality ofcontiguous tags,

Optionally, each merged data symbol is represented by the one or moredata elements using pulse position modulation.

Optionally, the data elements are macrodots (e.g. optically readablemarks in the form of dots), and wherein each merged data symbol isrepresented by m macrodots, each of the macrodots occupying a respectiveposition from a plurality of predetermined possible positions p withinthe merged data symbol, the respective positions of the macrodotsrepresenting one of a plurality of possible data values, wherein m is aninteger value of 1 or more, and p>m. For example, m may be 1, 2, 3, 4,5, 6 or 7 and p may be 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 or16.

Encoding by multi-PPM in this way ensures uniform coverage of thesubstrate with macrodots, which helps to reduce visibility. Moreover,PPM encoding provides an internal luminescence reference for readingmacrodots. For example, the darkest m macrodots in the p positions aretaken to be the PPM data, without the need to refer to any externalluminescence threshold value.

Optionally, each merged data symbol encodes the x-coordinate data symboland the y-coordinate data symbol.

Optionally, the x-coordinate data symbols and the y-coordinate datasymbols are contained in different merged symbols.

Optionally, one or more of the coordinate data symbols is a merged datasymbol, each merged data symbol being represented by the one or moredata elements, and wherein each merged data symbol encodes at least oneof the coordinate data symbols and at least one further data symbolwhich is different from the coordinate data symbol.

In a second aspect, there is provided a method of decoding aposition-coding pattern disposed on a surface of a substrate, the methodcomprising the steps of:

(a) operatively positioning an optical reader relative to the surfaceand capturing an image of a portion of the coding pattern, the codingpattern comprising:

a plurality of tags, each tag encoding a w-bit subsequence of a cycliccode sequence, the w-bit subsequence mapping to a correspondingcoordinate codeword for the tag, wherein adjacent tags contain w-bitsubsequences shifted by one bit relative to each other in the cycliccode sequence;

(b) sampling a windowed subsequence contained in the imaged portion;

(c) identifying a coordinate codeword using the windowed subsequence;and

(d) determining a position of the optical reader from the coordinatecodeword

wherein the imaged portion has a diameter of more than one tag diameterand less than two tag diameters.

Optionally, the windowed subsequence contains a first subsequence fromat least one first tag and a second subsequence from at least one secondtag, the first and second tags being adjacent to each other, and whereinthe method comprises the step of:

combining the first and second subsequences; and

using the combined first and second subsequences to identify thecoordinate codeword.

Thus, the first and second subsequences are usually derived from 2 ormore adjacent tags (e.g. 4 tags arranged in a square comprising twofirst tags and two second tags). Since coordinate codeword (and thecoordinate) is derivable from portions of tags, the length n of theunderlying code can be made relatively short and the field of view ofthe optical reader can be minimized.

Optionally, if the combined first and second subsequences does not mapto a valid coordinate codeword, the method comprises the step of:

determining a corresponding maximally likely coordinate from thecombined first and second subsequences.

Optionally, the imaged portion has a diameter of at least (l+q)√2 andspans across parts of at least first and second adjacent tags, a set ofcoordinate data symbols being arranged in each tag such that thewindowed subsequence contained in the imaged portion is guaranteed tocontain at least (w−1) bits of a w-bit subsequence, the method furthercomprising the step of:

combining a first subsequence from at least one first tag with a secondsubsequence from at least one second tag to retrieve at least (w−1) bitsof the w-bit subsequence, wherein l is a length of the tag and q is alength or a width of a coordinate data symbol.

Optionally, the windowed subsequence contains only (w−1) bits of thew-bit subsequence, and the method further comprises the step of:

determining a maximally likely coordinate corresponding to the windowedsubsequence.

Optionally, the imaged portion has a diameter of at least (l+v)√2 andspans across parts of a plurality of adjacent tags, the columns ofx-coordinate symbols and the rows of y-coordinate symbols being arrangedsuch the windowed subsequence contained in the imaged portion isguaranteed to contain at least (w−1) bits of a w-bit subsequence in thefirst cyclic code sequence and at least (w−1) bits of a w-bitsubsequence in the second cyclic code sequence, the method furthercomprising at least one step selected from the steps of:

combining subsequences from adjacent tags in at least one row of tags toretrieve at least (w−1) bits of the w-bit subsequence in the firstcyclic code sequence; and

combining subsequences from adjacent tags in at least one column of tagsto retrieve at least (w−1) bits of the w-bit subsequence in the secondcyclic code sequence, wherein l is a length of each tag.

In a third aspect, there is provided an optical reader configured fordecoding a position-coding pattern disposed on a surface of a substrate,the coding pattern comprising:

a plurality of tags, each tag encoding a w-bit subsequence of a cycliccode sequence, the w-bit subsequence mapping to a correspondingcoordinate codeword for the tag, wherein adjacent tags contain a w-bitsubsequence shifted by one bit relative to each other in the cyclic codesequence;

the optical reader comprising:

means for accessing the cyclic code sequence;

an image sensor for capturing an image of a portion of theposition-coding pattern, the image sensor having a field-of-view of morethan one tag diameter and less than two tag diameters; and

a processor configured for performing the steps of:

-   -   (i) sampling a windowed subsequence contained in the imaged        portion;    -   (ii) accessing the cyclic code sequence and comparing the        windowed subsequence with the accessed cyclic code sequence;    -   (iii) identifying a coordinate codeword using the windowed        subsequence; and    -   (iv) determining a position of the optical reader from the        coordinate codeword.

In a fourth aspect, there is provided a system for decoding aposition-coding pattern disposed on a surface of a substrate, the systemcomprising:

(A) the substrate, wherein the position-coding pattern comprises:

a plurality of tags, each tag encoding a w-bit subsequence of a cycliccode sequence, the w-bit subsequence mapping to a correspondingcoordinate codeword for the tag, wherein adjacent tags contain a w-bitsubsequence shifted by one bit relative to each other in the cyclic codesequence; and

(B) an optical reader comprising:

means for accessing the cyclic code sequence;

an image sensor for capturing an image of a portion of theposition-coding pattern, the image sensor having a field-of-view of morethan one tag diameter and less than two tag diameters; and

a processor configured for performing the steps of:

-   -   (i) sampling a windowed subsequence contained in the imaged        portion;    -   (ii) accessing the cyclic code sequence and comparing the        windowed subsequence with the accessed cyclic code sequence;    -   (iii) identifying a coordinate codeword using the windowed        subsequence; and    -   (iv) determining a position of the optical reader from the        coordinate codeword.

It will be understood that, where applicable, optional embodiments ofthe first aspect may also be optional embodiments of the second, thirdand/or fourth aspects.

In a fifth aspect, there is provided a substrate having aposition-coding pattern disposed on a surface thereof, theposition-coding pattern comprising:

a plurality of tags, each tag encoding a w-bit subsequence of a cycliccode sequence having a length n and a dimension k, the w-bit subsequencemapping to a corresponding coordinate codeword for the tag,

wherein adjacent tags contain successive w-bit subsequences in thecyclic code sequence, and wherein n>w>k.

Optionally, the w-bit subsequence is represented by a set of coordinatedata symbols in the tag, each of the coordinate data symbols containingat least one bit of the w-bit subsequence, each coordinate data symbolbeing represented by one or more data elements disposed on the surface.

Optionally, the cyclic code sequence is an m-sequence or a simplex code.

Optionally, the length n of the cyclic code sequence is defined as:n=2^(k)−1.

Optionally, a given tag contains a w-bit subsequence corresponding tooffset i in the cyclic code sequence, and adjacent tags on either sideof the given tag contain w-bit subsequences corresponding to offsets(i+w) and (i−w) in the cyclic code sequence.

Optionally, the set of coordinate data symbols is arranged in each tagsuch that at any square portion of the position-coding pattern of length(l+q) is guaranteed to contain a w-bit subsequence of the cyclic codesequence, the w-bit subsequence mapping to a coordinate codeword,wherein l is a length of the tag and q is a length or a width of acoordinate data symbol.

Optionally, columns of x-coordinate symbols and rows of y-coordinatesymbols are arranged such that any square portion of the position-codingpattern of length (l+v) is guaranteed to contain a w-bit subsequence ofthe first cyclic code sequence and a w-bit subsequence of the secondcyclic code sequence, each w-bit subsequence corresponding to an offsetin its respective first or second cyclic code sequence, each w-bitsubsequence mapping to at least one of:

a coordinate codeword for a tag; and

a coordinate codeword for a row or column within the tag,

wherein l is a length of the tag.

Optionally, one or more of the coordinate data symbols is a merged datasymbol, each merged data symbol being represented by the one or moredata elements, and wherein each merged data symbol encodes at least twoof:

an x-coordinate data symbol from the first set;

a y-coordinate data symbol from the second set; and

at least one further data symbol which is different from the x- andy-coordinate data symbols.

In a sixth aspect, there is provided a method of decoding aposition-coding pattern disposed on a surface of a substrate, the methodcomprising the steps of:

(a) operatively positioning an optical reader relative to the surfaceand capturing an image of a portion of the coding pattern, the codingpattern comprising:

a plurality of tags, each tag encoding a w-bit subsequence of a cycliccode sequence having a length n and a dimension k, the w-bit subsequencemapping to a corresponding coordinate codeword for the tag,

wherein adjacent tags contain successive w-bit subsequences in thecyclic code sequence;

(b) sampling a windowed subsequence contained in the imaged portion; and

(c) identifying a coordinate codeword corresponding to the windowedsubsequence; and

(d) determining a position of the optical reader from the coordinatecodeword,

wherein the imaged portion has a diameter of more than one tag diameterand less than two tag diameters, and wherein n>w>k.

Optionally, the windowed subsequence contains a first subsequence fromat least one first tag and a second subsequence from at least one secondtag, the first and second tags being adjacent to each other, and whereinthe method comprises the step of:

combining the first and second subsequences; and

using the combined first and second subsequences to identify thecoordinate codeword.

Optionally, if the combined first and second subsequences does not mapto a valid coordinate codeword, the method comprise the step of:

determining a corresponding maximally likely valid coordinate from thecombined first and second subsequences.

Optionally, the imaged portion has a diameter of at least (l+q)√2 andspans across parts of at least first and second adjacent tags, a set ofcoordinate data symbols being arranged in each tag such that thewindowed subsequence contained in the imaged portion is guaranteed tocontain a w-bit subsequence of the cyclic code sequence, the methodfurther comprising the step of:

combining a first subsequence from at least one first tag with a secondsubsequence from at least one second tag to retrieve the w-bitsubsequence, wherein l is a length of the tag and q is a length or awidth of a coordinate data symbol.

Optionally, the method further comprises the step of: mapping the w-bitsubsequence to a coordinate.

Optionally, each tag contains an x-coordinate codeword mapped from afirst cyclic code sequence and a y-coordinate codeword mapped from asecond cyclic code sequence, the x-coordinate codeword being defined bya first set of x-coordinate data symbols, and the y-coordinate codewordbeing defined by a second set of y-coordinate data symbols.

Optionally, the first set is arranged in subsets of x-coordinate datasymbols and the second set is arranged in subsets of y-coordinate datasymbols.

Optionally, each subset of x-coordinate data symbols is configured as acolumn containing a plurality of the x-coordinate data symbols, and eachsubset of y-coordinate data symbols is configured as a row containing aplurality of the y-coordinate data symbols, wherein each of the rows andcolumns has a maximal width v.

Optionally, the imaged portion has a diameter of at least (l+v)√2 andspans across parts of a plurality of adjacent tags, the columns ofx-coordinate symbols and the rows of y-coordinate symbols being arrangedsuch the windowed subsequence contained in the imaged portion isguaranteed to a w-bit subsequence in the first cyclic code sequence anda w-bit subsequence in the second cyclic code sequence, the methodfurther comprising at least one step selected from the steps of:

combining subsequences from adjacent tags in at least one row of tags toretrieve the w-bit subsequence in the first cyclic code sequence; and

combining subsequences from adjacent tags in at least one column of tagsto retrieve the w-bit subsequence in the second cyclic code sequence,wherein l is a length of each tag.

In a seventh aspect, there is provided an optical reader configured fordecoding a position-coding pattern disposed on a surface of a substrate,the coding pattern comprising:

a plurality of tags, each tag encoding a w-bit subsequence of a cycliccode sequence, the w-bit subsequence mapping to a correspondingcoordinate codeword for the tag, wherein adjacent tags containsuccessive w-bit subsequences in the cyclic code sequence;

the optical reader comprising:

means for accessing the cyclic code sequence;

an image sensor for capturing an image of a portion of theposition-coding pattern, the image sensor having a field-of-view of morethan one tag diameter and less than two tag diameters; and

a processor configured for performing the steps of:

-   -   (i) sampling a windowed subsequence contained in the imaged        portion;    -   (ii) accessing the cyclic code sequence and comparing the        windowed subsequence with the accessed cyclic code sequence;    -   (iii) identifying a coordinate codeword using the windowed        subsequence; and    -   (iv) determining a position of the optical reader from the        coordinate codeword.

Optionally, the imaged portion spans across parts of at least first andsecond adjacent tags such that the windowed subsequence contains a firstsubsequence from at least one first tag and a second subsequence from atleast one second tag, wherein the processor is further configured for:

combining the first and second subsequences; and

using the combined first and second subsequences to identify thecoordinate codeword.

In an eighth aspect, there is provided a system for decoding aposition-coding pattern disposed on a surface of a substrate, the systemcomprising:

(A) the substrate, wherein the position-coding pattern comprises:

a plurality of tags, each tag encoding a w-bit subsequence of a cycliccode sequence, the w-bit subsequence mapping to a correspondingcoordinate codeword for the tag,

wherein adjacent tags contain successive w-bit subsequences in thecyclic code sequence; and(B) an optical reader comprising:

means for accessing the cyclic code sequence;

an image sensor for capturing an image of a portion of theposition-coding pattern, the image sensor having a field-of-view of morethan one tag diameter and less than two tag diameters; and

a processor configured for performing the steps of:

-   -   (i) sampling a windowed subsequence contained in the imaged        portion;    -   (ii) accessing the cyclic code sequence and comparing the        windowed subsequence with the accessed cyclic code sequence;    -   (iii) identifying a coordinate codeword using the windowed        subsequence; and    -   (iv) determining a position of the optical reader from the        coordinate codeword.

It will be appreciated that optional embodiments of the fifth aspect mayalso be optional embodiments of the sixth, seventh and/or eighthaspects. Equally, some generic features of the first aspect may be usedin combination with the fifth, sixth, seventh and/or eighth aspects.

In a ninth aspect, there is provided a substrate having a coding patterndisposed on a surface thereof, the coding pattern comprising a pluralityof merged data symbols, each merged data symbol being represented by aplurality of data elements disposed on the surface, wherein each mergeddata symbol encodes at least a first individual data symbol and a secondindividual data symbol.

An advantage of the ninth aspect is that the merged data symbols occupya minimal area of the surface and minimize visible coloration of thesurface compared with separately disposed first and second individualdata symbols.

Optionally, the first and second individual data symbols are differentfrom each other.

Optionally, each merged data symbol encodes a first data symbol from afirst codeword and a second data symbol from a second codeword.

Optionally, each merged data symbol encodes a coordinate data symbolfrom a coordinate codeword and a common data symbol from a commoncodeword.

Optionally, each merged data symbol encodes an x-coordinate data symbolfrom an x-coordinate codeword, a y-coordinate data symbol from ay-coordinate codeword and a common data symbol from a common codeword.

Optionally, the common codeword encodes information common to anextended region of the surface, wherein the information is selected fromthe group consisting of: a region identity, an encoding format, a regionflag, a pattern scale identifier and a CRC.

Optionally, the first and second individual data symbols are symbolsfrom different error-correcting codes.

Optionally, the different error-correcting codes are selected from thegroup consisting of: Reed-Solomon codes, binary codes, simplex codes andcyclic position codes.

Optionally, the cyclic position codes use a cyclic code sequence, andwherein a w-bit subsequence of the cyclic code sequence defines acodeword.

Optionally, the cyclic code sequence is an m-sequence or a simplex code.

Optionally, the cyclic code sequence has a length n and a dimension k,and wherein: n>w>k.

Optionally, the w-bit subsequence of the cyclic code sequence defines acoordinate codeword.

Optionally, each merged data symbol in a set of the merged data symbolsencodes a coordinate data symbol from the coordinate codeword, eachcoordinate data symbol encoding one bit of the w-bit subsequence.

Optionally, the merged data symbol further encodes a multi-bitReed-Solomon symbol from a Reed-Solomon common codeword.

Optionally, wherein each merged data symbol is represented by the dataelements using pulse position modulation (PPM). Optionally, the dataelements are macrodots, and wherein each merged data symbol isrepresented by m macrodots, each of the macrodots occupying a respectiveposition from a plurality of predetermined possible positions p withinthe merged data symbol, the respective positions of the macrodotsrepresenting one of a plurality of possible data values, wherein m is aninteger value of 1 or more, and p>m. For example, m may be 1, 2, 3, 4,5, 6 or 7 and p may be 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15or 16.

Optionally, the coding pattern comprises a plurality of target elementsdefining a target grid, the target grid comprising a plurality of cells,each cell defining a symbol group containing one or more of the mergeddata symbols, wherein neighboring symbol groups share target elements.

Optionally, the coding pattern comprises a plurality of tags, each tagbeing square and comprising M² symbol groups, each symbol groupcontaining R symbols.

Optionally, a tag encoding strategy for each tag is in accordance with atag encoding strategy (1) to (4) described in Table A:

tag configuration coordinate common available tag (M² × R) = PPM mergedcodeword codeword data encoding No. of merged encoding symbol symbolsymbol capacity strategy symbols per tag (m-pPPM) size size size per tag(1) 2² × 8 = 32 2-9PPM 5b 1b 4b 160b (2) 2² × 8 = 32 3-9PPM 6b 1b 5b192b (3) 3² × 8 = 72 2-9PPM 5b 1b 4b 360b (4) 3² × 8 = 72 3-9PPM 6b 1b5b 432b

Optionally, a codeword configuration for each of the tag encodingstrategies (1) to (4) is in accordance with one of the codewordconfigurations described in Table B:

Coordinate Codeword Configuration(s) Common Codeword Configuration(s)for each tag encoding strategy for each tag encoding strategy total datatotal data tag Coordinate capacity of Common Reed- capacity of encodingcodewords Cyclic coordinate codewords Solomon coordinate strategy pertag Code codewords per tag Code codeword (s) (1) 2 (X, Y) (16, 8) 2 × 8× 2 (A, B) (15, 7) 2 × 7 × 1b = 16b 4b = 56b (2) 2 (X, Y) (16, 8) 2 × 8× 2 (A, B) (16, 8) 2 × 8 × 1b = 16b 5b = 80b 2 (X, Y) (16, 8) 2 × 8 × 1(A) (31, 23) 1 × 23 × 1b = 16b 5b = 115b 2 (X, Y) (32, 16) 2 × 16 × 2(A, B) (15, 7) 2 × 7 × 1b = 32b 4b = 56b (3) 2 (X, Y) (36, 20) 2 × 20 ×4 (A, B, (15, 7) (4 × 7 × 4b) + 1b = 40b C, D) + 1 (12, 4) (1 × 4 × (E)4b) = 128b (4) 2 (X, Y) (36, 20) 2 × 20 × 4 (A, B, (18, 10) 4 × 10 × 1b= 40b C, D) 5b = 200b 2 (X, Y) (36, 20) 2 × 20 × 3 (A, B, (24, 16) 3 ×16 × 1b = 40b C) 5b = 240b 2 (X, Y) (36, 20) 2 × 20 × 2 (A, B) (31, 23)2 × 23 × 1b = 40b 5b = 230b

In a tenth aspect, there is provided a method of decoding a codingpattern disposed on a surface of a substrate, the method comprising thesteps of:

(a) operatively positioning an optical reader relative to the surfaceand capturing an image of a portion of the coding pattern, the codingpattern comprising:

a plurality of merged data symbols, each merged data symbol beingrepresented by a plurality of data elements disposed on the surface,wherein each merged data symbol encodes a first individual data symbolfrom a first codeword and a second individual data symbol from a secondcodeword;

(b) sampling a set of the merged data symbols contained in the imagedportion; and

(c) decoding the sampled set of merged data symbols to obtain the firstcodeword encoded by a corresponding set of first individual datasymbols.

Optionally, the method further comprises the step of:

-   -   decoding the sampled set of merged data symbols to obtain a        second codeword encoded by a corresponding set of second        individual data symbols.

Optionally, the method further comprises the step of:

-   -   detecting at least one erroneous first individual data symbol in        the first codeword; and    -   treating a second individual data symbol co-encoded with the        erroneous first individual data symbol as an erasure.

Hence, decoding of the first individual data symbols may assist indetecting errors in the second individual data symbols co-encoded withthe first individual data symbols, and vice versa.

Optionally, the first codeword is a common codeword identifyinginformation common to an extended region of the surface.

Optionally, the second codeword is a coordinate codeword.

Optionally, each merged data symbol encodes a third individual datasymbol, and the method further comprises the step of:

-   -   decoding the sampled set of merged data symbols to obtain a        third codeword encoded by a corresponding set of third        individual data symbols.

In an eleventh aspect, there is provided an optical reader configuredfor decoding a coding pattern disposed on a surface of a substrate, thecoding pattern comprising:

a plurality of merged data symbols, each merged data symbol beingrepresented by a plurality of data elements disposed on the surface,wherein each merged data symbol encodes a first individual data symbolfrom a first codeword and a second individual data symbol from a secondcodeword;

the optical reader comprising:

an image sensor for capturing an image of a portion of the codingpattern; and

a processor configured for performing the steps of:

-   -   (i) sampling a set of the merged data symbols contained in the        imaged portion; and    -   (ii) decoding the sampled set of merged data symbols to obtain        the first codeword encoded by a corresponding set of first        individual data symbols.

Optionally, the processor is further configured for:

-   -   decoding the set plurality of merged data symbols to obtain a        second codeword encoded by a corresponding set of second        individual data symbols.

Optionally, the processor is further configured for:

-   -   detecting at least one erroneous first individual data symbol in        the first codeword; and    -   treating a second individual data symbol co-encoded with the        erroneous first individual data symbol as an erasure.

In a twelfth aspect, there is provided a system for decoding a codingpattern disposed on a surface of a substrate, the system comprising:

(A) the substrate, wherein the coding pattern comprises:

a plurality of merged data symbols, each merged data symbol beingrepresented by a plurality of data elements disposed on the surface,wherein each merged data symbol encodes a first individual data symbolfrom a first codeword and a second individual data symbol from a secondcodeword;

(B) an optical reader comprising:

an image sensor for capturing an image of a portion of the codingpattern; and

a processor configured for performing the steps of:

-   -   (i) sampling a set of the merged data symbols contained in the        imaged portion; and    -   (ii) decoding the sampled set of merged data symbols to obtain        the first codeword encoded by a corresponding set of first        individual data symbols;    -   (iii) detecting at least one erroneous first individual data        symbol in the first codeword;    -   (iv) treating a second individual data symbol co-encoded with        the erroneous first individual data symbol as an erasure; and    -   decoding the sampled set of merged data symbols to obtain a        second codeword encoded by a corresponding set of second        individual data symbols including the erasure.

In a thirteenth aspect, there is provided a method of encoding a codingpattern for disposition on a surface of a substrate, the methodcomprising the step of:

co-encoding, in a merged data symbol, a first individual data symbolfrom a first codeword with at least a second individual data symbol froma second codeword, wherein the merged data symbol is represented on thesurface by a plurality of data elements disposed thereon.

The method of thirteenth aspect may advantageously minimize a number ofthe data elements disposed on the surface.

The method of thirteenth aspect may advantageously minimize visiblecoloration of the surface.

Optionally, the merged data symbol is represented by the data elementsusing pulse position modulation (PPM) as described above.

Optionally, the coding pattern comprises a plurality of the merged datasymbols.

Optionally, the method further comprises the step of printing the mergeddata symbol onto the surface.

Optionally, each merged data symbol encodes a coordinate data symbolfrom a coordinate codeword and a common data symbol from a commoncodeword.

Optionally, each merged data symbol encodes an x-coordinate data symbolfrom an x-coordinate codeword, a y-coordinate data symbol from ay-coordinate codeword and a common data symbol from a common codeword.

Optionally, the first and second individual data symbols are symbolsfrom different error-correcting codes.

It will be appreciated that optional embodiments of the ninth aspect mayalso be optional embodiments of the tenth, eleventh, twelfth andthirteenth aspects.

BRIEF DESCRIPTION OF DRAWINGS

Preferred and other embodiments of the invention will now be described,by way of non-limiting example only, with reference to the accompanyingdrawings, in which:

FIG. 1 is a schematic of a relationship between a sample printed netpageand its online page description;

FIG. 2 shows an embodiment of basic netpage architecture with variousalternatives for the relay device;

FIG. 3 shows a tag structure with 3×3 symbol groups;

FIG. 4 shows a tag structure with 2×2 symbol groups;

FIG. 5 shows a symbol group;

FIG. 6 shows the layout of a 9PPM data symbol;

FIG. 7 shows the spacing of macrodot positions;

FIG. 8 shows the layout of a registration symbol;

FIG. 9 shows the layout of a 32-bit x-coordinated codeword;

FIG. 10 shows the layout of a 32-bit y-coordinated codeword;

FIG. 11 shows the layout of a common codeword A;

FIG. 12 shows the layout of a common codeword B;

FIG. 13 shows the layout of a 16-bit x-coordinated codeword;

FIG. 14 shows the layout of a 16-bit y-coordinated codeword;

FIG. 15 shows the layout of a Reed-Solomon codeword;

FIG. 16 is a flowchart of initial image processing by the Netpage pen;

FIG. 17 is a flowchart of codeword decoding subsequent to the initialimage processing;

FIG. 18 shows a nib and elevation of the Netpage pen held by a user;

FIG. 19 shows the pen held by a user at a typical incline to a writingsurface;

FIG. 20 is a lateral cross section through the pen;

FIG. 21A is a bottom and nib end partial perspective of the pen;

FIG. 21B is a bottom and nib end partial perspective with the fields ofillumination and field of view of the sensor window shown in dottedoutline;

FIG. 22 is a longitudinal cross section of the pen;

FIG. 23A is a partial longitudinal cross section of the nib and barrelmolding;

FIG. 23B is a partial longitudinal cross section of the IR LED's and thebarrel molding;

FIG. 24 is a ray trace of the pen optics adjacent a sketch of the inkcartridge;

FIG. 25 is a side elevation of the lens;

FIG. 26 is a side elevation of the nib and the field of view of theoptical sensor; and

FIG. 27 is a block diagram of the pen electronics.

DETAILED DESCRIPTION OF PREFERRED AND OTHER EMBODIMENTS 1.1 NetpageSystem Architecture

In a preferred embodiment, the invention is configured to work with thenetpage networked computer system, an overview of which follows. Inbrief summary, the preferred form of the netpage system employs acomputer interface in the form of a mapped surface, that is, a physicalsurface which contains references to a map of the surface maintained ina computer system. The map references can be queried by an appropriatesensing device. Depending upon the specific implementation, the mapreferences may be encoded visibly or invisibly, and defined in such away that a local query on the mapped surface yields an unambiguous mapreference both within the map and among different maps. The computersystem can contain information about features on the mapped surface, andsuch information can be retrieved based on map references supplied by asensing device used with the mapped surface. The information thusretrieved can take the form of actions which are initiated by thecomputer system on behalf of the operator in response to the operator'sinteraction with the surface features.

In its preferred form, the netpage system relies on the production of,and human interaction with, netpages. These are pages of text, graphicsand images printed on ordinary paper, but which work like interactivewebpages. Information is encoded on each page using ink which issubstantially invisible to the unaided human eye. The ink, however, andthereby the coded data, can be sensed by an optically imaging sensingdevice (or reader) and transmitted to the netpage system. The sensingdevice may take the form of a clicker (for clicking on a specificposition on a surface), a pointer having a stylus (for pointing orgesturing on a surface using pointer strokes), or a pen having a markingnib (for marking a surface with ink when pointing, gesturing or writingon the surface). References herein to “pen” or “netpage pen” areprovided by way of example only. It will, of course, be appreciated thatthe pen may take the form of any of the sensing devices or readersdescribed herein.

In one embodiment, active buttons and hyperlinks on each page can beclicked with the sensing device to request information from the networkor to signal preferences to a network server. In one embodiment, textwritten by hand on a netpage is automatically recognized and convertedto computer text in the netpage system, allowing forms to be filled in.In other embodiments, signatures recorded on a netpage are automaticallyverified, allowing e-commerce transactions to be securely authorized. Inother embodiments, text on a netpage may be clicked or gestured toinitiate a search based on keywords indicated by the user.

As illustrated in FIG. 1, a printed netpage 1 can represent ainteractive form which can be filled in by the user both physically, onthe printed page, and “electronically”, via communication between thepen and the netpage system. The example shows a “Request” formcontaining name and address fields and a submit button. The netpage 1consists of graphic data 2, printed using visible ink, and a surfacecoding pattern 3 superimposed with the graphic data. The surface codingpattern 3 comprises a collection of tags 4. A typical tag 4 is shown inthe shaded region of FIG. 1, although it will be appreciated thatcontiguous tags 4, defined by the coding pattern 3, are densely tiledover the whole netpage 1.

The corresponding page description 5, stored on the netpage network,describes the individual elements of the netpage. In particular itdescribes the type and spatial extent (zone) of each interactive element(i.e. text field or button in the example), to allow the netpage systemto correctly interpret input via the netpage. The submit button 6, forexample, has a zone 7 which corresponds to the spatial extent of thecorresponding graphic 8.

As illustrated in FIG. 2, a netpage sensing device 400, such as the pendescribed in Section 3, works in conjunction with a netpage relay device601, which is an Internet-connected device for home, office or mobileuse. The pen 400 is wireless and communicates securely with the netpagerelay device 601 via a short-range radio link 9. In an alternativeembodiment, the netpage pen 400 utilises a wired connection, such as aUSB or other serial connection, to the relay device 601.

The relay device 601 performs the basic function of relaying interactiondata to a page server 10, which interprets the interaction data. Asshown in FIG. 2, the relay device 601 may, for example, take the form ofa personal computer 601 a, a netpage printer 601 b or some other relay601 c (e.g. personal computer or mobile phone incorporating a webbrowser).

The netpage printer 601 b is able to deliver, periodically or on demand,personalized newspapers, magazines, catalogs, brochures and otherpublications, all printed at high quality as interactive netpages.Unlike a personal computer, the netpage printer is an appliance whichcan be, for example, wall-mounted adjacent to an area where the morningnews is first consumed, such as in a user's kitchen, near a breakfasttable, or near the household's point of departure for the day. It alsocomes in tabletop, desktop, portable and miniature versions. Netpagesprinted on-demand at their point of consumption combine the ease-of-useof paper with the timeliness and interactivity of an interactive medium.

Alternatively, the netpage relay device 601 may be a portable device,such as a mobile phone or PDA, a laptop or desktop computer, or aninformation appliance connected to a shared display, such as a TV. Ifthe relay device 601 is not a netpage printer 601 b which printsnetpages digitally and on demand, the netpages may be printed bytraditional analog printing presses, using such techniques as offsetlithography, flexography, screen printing, relief printing androtogravure, as well as by digital printing presses, using techniquessuch as drop-on-demand inkjet, continuous inkjet, dye transfer, andlaser printing.

As shown in FIG. 2, the netpage sensing device 400 interacts with aportion of the tag pattern on a printed netpage 1, or other printedsubstrate such as a label of a product item 251, and communicates, via ashort-range radio link 9, the interaction to the relay device 601. Therelay 601 sends corresponding interaction data to the relevant netpagepage server 10 for interpretation. Raw data received from the sensingdevice 400 may be relayed directly to the page server 10 as interactiondata. Alternatively, the interaction data may be encoded in the form ofan interaction URI and transmitted to the page server 10 via a user'sweb browser 601 c. The web browser 601 c may then receive a URI from thepage server 10 and access a webpage via a webserver 201. In somecircumstances, the page server 10 may access application computersoftware running on a netpage application server 13.

The netpage relay device 601 can be configured to support any number ofsensing devices, and a sensing device can work with any number ofnetpage relays. In the preferred implementation, each netpage sensingdevice 400 has a unique identifier. This allows each user to maintain adistinct profile with respect to a netpage page server 10 or applicationserver 13.

Digital, on-demand delivery of netpages 1 may be performed by thenetpage printer 601 b, which exploits the growing availability ofbroadband Internet access. Netpage publication servers 14 on the netpagenetwork are configured to deliver print-quality publications to netpageprinters. Periodical publications are delivered automatically tosubscribing netpage printers via pointcasting and multicasting Internetprotocols. Personalized publications are filtered and formattedaccording to individual user profiles.

A netpage pen may be registered with a netpage registration server 11and linked to one or more payment card accounts. This allows e-commercepayments to be securely authorized using the netpage pen. The netpageregistration server compares the signature captured by the netpage penwith a previously registered signature, allowing it to authenticate theuser's identity to an e-commerce server. Other biometrics can also beused to verify identity. One version of the netpage pen includesfingerprint scanning, verified in a similar way by the netpageregistration server.

1.2 Netpages

Netpages are the foundation on which a netpage network is built. Theyprovide a paper-based user interface to published information andinteractive services.

As shown in FIG. 1, a netpage consists of a printed page (or othersurface region) invisibly tagged with references to an onlinedescription 5 of the page. The online page description 5 is maintainedpersistently by the netpage page server 10. The page descriptiondescribes the visible layout and content of the page, including text,graphics and images. It also describes the input elements on the page,including buttons, hyperlinks, and input fields. A netpage allowsmarkings made with a netpage pen on its surface to be simultaneouslycaptured and processed by the netpage system.

Multiple netpages (for example, those printed by analog printingpresses) can share the same page description. However, to allow inputthrough otherwise identical pages to be distinguished, each netpage maybe assigned a unique page identifier. This page ID (or, more generally,region ID) has sufficient precision to distinguish between a very largenumber of netpages.

Each reference to the page description 5 is repeatedly encoded in thenetpage pattern. Each tag (and/or a collection of contiguous tags)identifies the unique page on which it appears, and thereby indirectlyidentifies the page description 5. Each tag also identifies its ownposition on the page. Characteristics of the tags are described in moredetail below.

Tags are typically printed in infrared-absorptive ink on any substratewhich is infrared-reflective, such as ordinary paper, or in infraredfluorescing ink. Near-infrared wavelengths are invisible to the humaneye but are easily sensed by a solid-state image sensor with anappropriate filter.

A tag is sensed by a 2D area image sensor in the netpage sensing device,and the tag data is transmitted to the netpage system via the nearestnetpage relay device 601. The pen 400 is wireless and communicates withthe netpage relay device 601 via a short-range radio link. It isimportant that the pen recognize the page ID and position on everyinteraction with the page, since the interaction is stateless. Tags areerror-correctably encoded to make them partially tolerant to surfacedamage.

The netpage page server 10 maintains a unique page instance for eachunique printed netpage, allowing it to maintain a distinct set ofuser-supplied values for input fields in the page description 5 for eachprinted netpage 1.

2 Netpage Tags 2.1 Tag Data Content

Each tag 4 identifies an absolute location of that tag within a regionof a substrate.

Each interaction with a netpage should also provide a region identitytogether with the tag location. In a preferred embodiment, the region towhich a tag refers coincides with an entire page, and the region ID istherefore synonymous with the page ID of the page on which the tagappears. In other embodiments, the region to which a tag refers can bean arbitrary subregion of a page or other surface. For example, it cancoincide with the zone of an interactive element, in which case theregion ID can directly identify the interactive element.

As described in the Applicant's previous applications (e.g. U.S. Pat.No. 6,832,717), the region identity may be encoded discretely in eachtag 4. As will be described in more detail below, the region identitymay be encoded by a plurality of contiguous tags in such a way thatevery interaction with the substrate still identifies the regionidentity, even if a whole tag is not in the field of view of the sensingdevice.

Each tag 4 should preferably identify an orientation of the tag relativeto the substrate on which the tag is printed. Orientation data read froma tag enables the rotation (yaw) of the pen 400 relative to thesubstrate to be determined.

A tag 4 may also encode one or more flags which relate to the region asa whole or to an individual tag. One or more flag bits may, for example,signal a sensing device to provide feedback indicative of a functionassociated with the immediate area of the tag, without the sensingdevice having to refer to a description of the region. A netpage penmay, for example, illuminate an “active area” LED when in the zone of ahyperlink. Alternatively, an active area flag may indicate to the pen400 to forward captured input immediately to the Netpage server 10.

A tag 4 may also encode a digital signature or a fragment thereof. Tagsencoding (partial) digital signatures are useful in applications whereit is required to verify a product's authenticity. Such applications aredescribed in, for example, US Publication No. 2007/0108285, the contentsof which is herein incorporated by reference. The digital signature maybe encoded in such a way that it can be retrieved from every interactionwith the substrate. Alternatively, the digital signature may be encodedin such a way that it can be assembled from a random or partial scan ofthe substrate.

It will, of course, be appreciated that other types of information (e.g.tag size etc) may also be encoded into each tag or a plurality of tags,as will be explained in more detail below.

2.2 General Tag Structure

As described above in connection with FIG. 1, the netpage surface codinggenerally consists of a dense planar tiling of tags. In the presentinvention, each tag 4 is represented by a coding pattern which containstwo kinds of elements. Referring to FIGS. 3 to 5, the first kind ofelement is a target element. Target elements in the form of target dots301 allow a tag 4 to be located in an image of a coded surface, andallow the perspective distortion of the tag to be inferred. The secondkind of element is a data element in the form of a macrodot 302 (seeFIG. 6). The macrodots 302 encode data values. As described in theApplicant's earlier disclosures (e.g. U.S. Pat. No. 6,832,717), thepresence or absence of a macrodot was be used to represent a binary bit.However, the tag structure of the present invention encodes a data valueusing multi-pulse position modulation, which is described in more detailin Section 2.3.

The coding pattern 3 is represented on the surface in such a way as toallow it to be acquired by an optical imaging system, and in particularby an optical system with a narrowband response in the near-infrared.The pattern 3 is typically printed onto the surface using a narrowbandnear-infrared ink.

2.2.1 Tag Structure with 3×3 Symbol Groups

FIG. 3 shows the structure of a complete tag 4A with target elements 301shown. The tag 4A is square and contains sixteen target elements. Thosetarget elements 301 located at the edges and corners of the tag (twelvein total) are shared by adjacent tags and define the perimeter of thetag. The high number of target elements 301 advantageously facilitatesaccurate determination of a perspective distortion of the tag 4A when itis imaged by the Netpage pen 400. This improves the accuracy of tagsensing and, ultimately, position determination.

The tag 4A consists of a square array of nine symbol groups 303. Symbolgroups 303 are demarcated by the target elements 301 so that each symbolgroup is contained within a square defined by four target elements.Adjacent symbol groups 303 are contiguous and share targets.

Since the target elements 301 are all identical, they do not demarcateone tag from its adjacent tags. Viewed purely at the level of targetelements, only symbol groups 303, which define cells of a target grid,can be distinguished—the tags 4A themselves are indistinguishable byviewing only the target elements. Hence, tags 4A must be aligned withthe target grid as part of tag decoding.

2.2.2 Tag Structure with 2×2 Symbol Groups

FIG. 4 shows the structure of an alternative tag 4B with target elements301 shown. The tag 4B is square, but differs from the tag 4A in that itcontains nine target elements. Those target elements 301 located at theedges and corners of the tag (eight in total) are shared by adjacenttags and define the perimeter of the tag.

The tag 4B consists of a square array of four symbol groups 303. Anindividual symbol group 303, used in either tag 4A or 4B, is describedin Section 2.3

2.3 Symbol Groups

As shown in FIG. 5, each of the symbol groups 303 comprises eight datasymbols 304. In addition, each symbol group 303 comprises a pair ofregistration symbols—a vertical registration symbol (‘VRS’) and ahorizontal registration symbol (FIRS). These allow the orientation andtranslation of the tag in the field of view to be determined.Translation refers to the translation of tag(s) relative to the symbolgroups 303 in the field of view. In other words, the registrationsymbols enable alignment of the ‘invisible’ tags with the target grid.

Each data symbol 304 is a multi-pulse position modulated (PPM) datasymbol. Typically, each PPM data symbol 304 encodes either 5-bits or6-bits using 2-9PPM or 3-9PPM encoding, respectively. i.e. 2 macrodotsin any of 9 positions {p₀, p₁, p₂, p₃, p₄, p₅, p₆, p₇, p₈} or 3macrodots in any of the 9 positions {p₀, p₁, p₂, p₃, p₄, p₅, p₆, p₇,p₈}. FIG. 6 shows the layout for a 2-9PPM or 3-9PPM data symbol 304.

Table 1 defines the mapping from 2-9PPM symbol values to data symbolvalues. Unused symbol values can be treated as erasures.

TABLE 1 2-9PPM symbol to data symbol value mapping 2-9PPM symbol valuedata symbol value (p₈-p₀) (base 16) 000, 000, 011 0 000, 000, 101 1 000,000, 110 2 000, 001, 001 3 000, 001, 010 4 000, 001, 100 5 000, 010, 0016 000, 010, 010 7 000, 010, 100 8 000, 011, 000 9 000, 100, 001 a 000,100, 010 b 000, 100, 100 c 000, 101, 000 d 000, 110, 000 e 001, 000, 001f 001, 000, 010 10 001, 000, 100 11 001, 001, 000 12 001, 010, 000 13001, 100, 000 14 010, 000, 001 15 010, 000, 010 16 010, 000, 100 17 010,001, 000 18 010, 010, 000 19 010, 100, 000 1a 011, 000, 000 1b 100, 000,001 1c 100, 000, 010 1d 100, 000, 100 1e 100, 001, 000 1f 100, 010, 000unused 100, 100, 000 unused 101, 000, 000 unused 110, 000, 000 unused

The mapping from 3-9PPM symbol values to data symbol values follows asimilar scheme to the mapping scheme described in Table 1. A 3-9PPM datasymbol maps to 84 data symbol values in total. However, only the first64 of these 3-9PPM data symbol values are used to map to successive6-bit data symbol values. Unused symbols are again treated as erasures.

3-9PPM data symbols have the advantage of allowing more data to beencoded in each symbol. However, 2-9PPM data symbols have the advantageof using less ink and, therefore, have less visible coloration of thesubstrate, particularly if the ink used to print the coding pattern 3 isnot perfectly invisible.

As noted above, each symbol group also contains a 2-6PPM verticalregistration symbol

(VRS) and a 2-6PPM horizontal registration symbol (HRS), which will bedescribed in more detail in Section 2.6.

2.4 Targets and Macrodots

The spacing of macrodots 302 in both dimensions, as shown in FIG. 7, isspecified by the parameter s. It has a nominal value of 127 μm, based on8 dots printed at a pitch of 1600 dots per inch.

Only macrodots 302 are part of the representation of a symbol 304 in thepattern. The outline of a symbol 304 is shown in, for example, FIGS. 3to 5 merely to elucidate more clearly the structure of a tag 4.

A macrodot 302 is nominally square with a nominal size of 0.5 s.However, it is allowed to vary in size by ±10% according to thecapabilities of the device used to produce the pattern.

A target 301 is nominally circular with a nominal diameter of 1.5 s.However, it is allowed to vary in size by ±10% according to thecapabilities of the device used to produce the pattern.

Each symbol group 303 has a width of 10 s. Therefore, each tag 4A(having a 3×3 tag structure) has a width of 30 s and a length of 30 s.Similarly, each tag 4B (having a 2×2 tag structure) has a width of 20 sand a length of 20 s.

However, it should be noted from FIGS. 3 and 4 that the tags 4A and 4Bare configured so that some data symbols extend beyond the perimeteredge of the tag by one macrodot unit (1 s), and interlock withcomplementary symbol groups from adjacent tags. This arrangementprovides a tessellated pattern of data symbols 304 within the targetgrid.

The macrodot spacing, and therefore the overall scale of the tagpattern, is allowed to vary by 170 μm and 120 μm according to thecapabilities of the device used to produce the pattern. Any deviationfrom the nominal scale is recorded in each tag (via the macrodot size IDfield) to allow accurate generation of position samples.

These tolerances are independent of one another. They may be refinedwith reference to particular printer characteristics.

If the macrodot spacing exceeds 127 μm then the tag is limited to foursymbol groups as described in Section 2.2.2.

2.5 Field of View

As mentioned above, the tags 4A and 4B are designed to allow all tagdata to be recovered from an imaging field of view roughly the size ofthe tag.

Although data which is common to a set of tags, in one or both spatialdimensions, may be decoded from fragments from adjacent tags,pulse-position modulated values are best decoded from spatially-coherentsamples (i.e. from a whole symbol as opposed to partial symbols atopposite sides of the field of view), since this allows raw samplevalues to be compared without first being normalised. This implies thatthe field of view must be large enough to contain two complete copies ofeach such pulse-position modulated value. The tag is designed so thatthe maximum extent of a pulse-position modulated value is fourmacrodots. Making the field of view at least as large as the tag plusfour macrodot units guarantees that pulse-position modulated values canbe coherently sampled.

2.6 Registration Symbols

Each registration symbol is encoded using 2-6PPM. FIG. 8 shows thelayout of the registration symbol.

As shown in FIG. 5, the horizontal and vertical registration symbolseach appear once within a symbol group 303. The registration symbols ofan entire tag typically indicate the vertical and horizontal translationof the tag by coding two orthogonal translation codes, and theorientation of the tag by coding two orthogonal direction codes. Eachregistration symbol may also encode a one-bit symbol of a flag code.

Table 2 defines the mapping from 2-6PPM registration symbol values toflag code, direction code and translation code symbol values.

TABLE 2 2-6PPM registration symbol values to flag code, direction codeand translation code symbol mapping 2-6PPM symbol translation codedirection code flag code value {p₅-p₀} symbol value symbol value symbolvalue 001, 001 0 0 unspecified 100, 010 1 001, 010 1 0 0 000, 101 1 010,100 1 0 101, 000 1 010, 001 2 0 unspecified 100, 100 1 000, 011 3 0 000,110 1 011, 000 4 0 110, 000 1 001, 100 unused 010, 010 100, 001

2.6.1 Registration Symbols for Tag 4A (3×3 Tag Structure)

Tags 4A (having a 3×3 tag structure) use the first eight registrationsymbol values in Table 2 i.e. those registration symbol values mappingto a translation code symbol value of 0, 1 or 2. In other words, if theregistration symbol value maps to a translation code symbol value of 0,1 or 2, then the position-coding pattern is identified as containingtags 4A having nine symbol groups 303 contained in one tag 4A.

The additional translation code symbol values (i.e. 3 and 4) shown inTable 2 are reserved for tags 4B (having a 2×2 tag structure). Thus, ifthe registration symbol value maps to a translation code symbol value of3 or 4, then the position-coding pattern is identified as containingtags 4B having four symbol groups 303 contained in one tag 4B. In thisway, the registration symbol provides a means of distinguishingposition-coding patterns containing tags 4A or tags 4B, as describedherein. Subsequent decoding of PPM data symbols proceeds in accordancewith the position-coding pattern identified from decoding theregistration symbol(s).

In the tag 4A, each row of symbol groups and each column of symbolgroups encodes a three-symbol 3-ary cyclic position code. (TheApplicant's cyclic position codes are described in U.S. Pat. No.7,082,562, the contents of which is herein incorporated by reference).The code consists of the codeword (0, 1, 2) and its cyclic shifts. Thecode has a minimum distance of 3, allowing a single symbol error to becorrected. For each of the two orthogonal translations, the threetranslation codes of an entire tag form a code with a minimum distanceof 9, allowing 4 symbol errors to be corrected. If additional symbolsare visible within the field of view then they can be used foradditional redundancy.

The translation code symbol in the middle of the codeword (i.e. 1) ismapped to a set of 2-6PPM symbol values that are each other's reverse,while the two translation code symbols at the ends of the codeword (i.e.0 and 2) are each mapped to a set of 2-6PPM symbol values that are thereverses of the 2-6PPM symbol values in the other set. Thus a 0 readupside-down (i.e. rotated 180 degrees) becomes a 2, and vice versa,while a 1 read upside-down remains a 1. This allows translation to bedetermined independently of rotation.

Furthermore, in the tag 4A, each 2-6PPM symbol value and its reverse mapto opposite direction code symbol values (Table 2). The verticalregistration symbols of an entire tag encode 9 symbols of a verticaldirection code. This has a minimum distance of 9, allowing 4 symbolerrors to be corrected. The horizontal registration symbols of an entiretag encode 9 symbols of a horizontal direction code. This has a minimumdistance of 9, allowing 4 symbol errors to be corrected. If additionalsymbols are visible within the field of view then they can be used foradditional redundancy. Any erasures detected during decoding of atranslation code can also be used during decoding of a direction code,and vice versa. Together the orthogonal direction codes allow theorientation of the tag to be determined.

The top left corner of an un-rotated tag is identified by a symbol groupwhose translation symbols are both zero and whose direction symbols areboth zero.

The active flag symbol consists of one bit of data, and is encoded ineach vertical and horizontal registration symbol, as shown in Table 2.The active flag symbol allows the Netpage pen 400 to provide immediatefeedback to a user without reference to the corresponding pagedescription 5. For example, the pen 400, upon detection of an activeflag, may indicate to a user (e.g. via an LED) that it is positionedwithin the zone of a hyperlink.

An active flag symbol is unique to a tag and is therefore codedredundantly in each quadrant of the tag. Since the active flag symbol isencoded in each registration symbol, it appears eight times within eachquadrant. Eight symbols form a code with a minimum distance of 8,allowing 3 errors to be corrected. If additional symbols are visiblewithin the field of view then they can be used for additionalredundancy. Any erasures detected during decoding of translation and/ordirection codes can also be used during decoding of the flag code, andvice versa.

2.6.2 Registration Symbols for Tags 4B (2×2 Tag Structure)

Each registration symbol contained in the tags 4B is positioned andconfigured in the same way as the registration symbols contained in tags4A. However, as mentioned in Section 2.6.1, the tags 4B utilize onlythose registration symbol values mapping to the translation code symbolvalues (3, 4). This enables the registration symbol to identify the tags4B containing four symbols groups, and distinguish them from the tags 4Acontaining nine symbol groups.

In the tags 4B, each row of symbol groups and each column of symbolgroups encodes a two-symbol 2-ary cyclic position code. (The Applicant'scyclic position codes are described in U.S. Pat. No. 7,082,562, thecontents of which is herein incorporated by reference). The codeconsists of the codeword (3, 4) and its cyclic shifts. For each of thetwo orthogonal translations, the two translation codes of an entire tagform a code with a minimum distance of 4, allowing 1 symbol error to becorrected. If additional symbols are visible within the field of viewthen they can be used for additional redundancy.

The two translation code symbols (3 and 4) are each mapped to a set of2-6PPM symbol values that are the reverses of the 2-6PPM symbol valuesin the other set. Thus a 3 read upside-down (i.e. rotated 180 degrees)becomes a 4, and vice versa. This allows translation to be determinedindependently of rotation.

Furthermore, in the tags 4B, each 2-6PPM symbol value and its reversemap to opposite direction code symbol values (Table 2). The verticalregistration symbols of an entire tag encode 4 symbols of a verticaldirection code. This has a minimum distance of 4, allowing 1 symbolerror to be corrected. The horizontal registration symbols of an entiretag encode 4 symbols of a horizontal direction code. This has a minimumdistance of 4, allowing 1 symbol error to be corrected. If additionalsymbols are visible within the field of view then they can be used foradditional redundancy. Any erasures detected during decoding of atranslation code can also be used during decoding of a direction code,and vice versa. Together the orthogonal direction codes allow theorientation of the tag to be determined.

The top left corner of an un-rotated tag is identified by a symbol groupwhose translation symbols are both zero and whose direction symbols areboth zero.

Although as shown in Table 2, the 2-6PPM registration symbol does notallow flag codes for the tags 4B, it will be appreciated that a 3-6PPMregistration symbol mapping to 20 available symbol values would allowthe tags 4B to contain flag codes, if desired. In this case, 12registration symbol values (3×2×2) would be used for the tags 4A, and 8registration symbols value (2×2×2) would be used for the tags 4B.

2.7 Merged Codeword Encoding

In the Applicant's copending applications, U.S. application Ser. No.12/178,611 (Docket No. NPT087US) and Docket No. NPT100US, which will besubstituted with the corresponding application number, once assigned.The contents of which are incorporated herein by reference; tagsgenerally encode codewords using a distinct set of PPM data symbols foreach codeword.

As described in NPT087US, an x-coordinate Reed-Solomon codeword may beencoded by a distinct set of X data symbols (e.g. X0, X1, X2, X3, X4,X5, X6, X7, X8, X9, X10) and a y-coordinate Reed-Solomon codeword may beencoded by a distinct set of Y data symbols (e.g. Y0, Y1, Y2, Y3, Y4,Y5, Y6, Y7, Y8, Y9, Y10). Moreover, the Applicant has described variousarrangements of X and Y data symbols within each tag, which make use ofthe fact that the x-coordinate does not vary within a column of tags,and the y-coordinate does not vary within a row of tags. This enablesspace to be saved in the tag, whilst still allowing each completecoordinate codeword to be read from a substantially tag-sized field ofview. For example, at least some of the X data symbols may be placed ina column of the tag to avoid replicating the X data symbols in eacheast-west half of the tag. Likewise, at least some of the Y data symbolsmay be placed in a row of the tag to avoid replicating the Y datasymbols in each north-south half of the tag.

Likewise, information common to a set of contiguous tags in a surfaceregion may be encoded by one or more common Reed-Solomon codewords e.g.A, B, C and D codewords. As described in, for example, NPT087US, eachsuch Reed-Solomon codeword is encoded by a distinct set of PPM datasymbols. Common codewords typically encode a region ID, but may alsoencode other information, such as an encoding format, a region flag, apattern scale identifier (e.g. tag size ID or macrodot size ID) and aCRC.

A secret-key signature or a fragment of an embedded data object may beencoded by an optional Reed-Solomon codeword e.g. E codeword. Asdescribed in, for example, NPT087US, this optional Reed-Solomon codewordis encoded by a distinct set of PPM data symbols. The provision of adistinct set of PPM data symbols for each codeword necessarily uses upvaluable space in each tag. As an alternative to encoding each codewordin a distinct set of PPM symbols, individual symbols from two (or more)codewords can be merged into a single PPM symbol.

Merged PPM data symbols not only save space in each tag, but may alsoassist in detecting errors during decoding. For example, if a symbolfrom one codeword is found to be in error during ECC decoding, then anysymbol (or symbols) located in the same PPM symbol can be flagged as anerasure.

The symbols from two (or more) codewords in a merged PPM data symbol mayuse the same error-correcting code (ECC) or they may use differenterror-correcting codes. For example, each symbol of the x-coordinate andy-coordinate codewords can be combined with a symbol of the commoncodeword(s) in a single PPM symbol. In this case the coordinatecodewords may be encoded using a code with a smaller symbol size thanthe common codeword(s), such as a binary code.

Whilst it is not feasible to elucidate all possible code configurationsutilizing merged PPM data symbols, Tables 3 and 4 give examples of somepossible code configurations using merged 2-9PPM and 3-9PPM datasymbols. Where the error-correcting code (ECC) symbol size has multiplebits, then a Reed-Solomon code is typically used. Where the ECC symbolsize is 1 bit, then a cyclic code, as described in Section 2.8, istypically used.

TABLE 3 Examples of combined tag encoding strategies tag tag mergedcoordinate common available encoding configuration PPM symbol codewordcodeword data capacity strategy (symbols) encoding size symbol sizesymbol size per tag (1) 2² × 8 = 32 2-9PPM 5b 1b 4b 160b (2) 2² × 8 = 323-9PPM 6b 1b 5b 192b (3) 3² × 8 = 72 2-9PPM 5b 1b 4b 360b (4) 3² × 8 =72 3-9PPM 6b 1b 5b 432b

TABLE 4 Examples of Coordinate and Common Codeword ConfigurationsCoordinate Codeword Configuration(s) Common Codeword Configuration(s)for each tag encoding strategy for each tag encoding strategy total datatotal data tag Coordinate capacity of Common Reed- capacity of encodingcodewords Cyclic coordinate codewords Solomon coordinate strategy pertag Code codewords per tag Code codeword(s) (1) 2 (X, Y) (16, 8) 2 × 8 ×2 (A, B) (15, 7) 2 × 7 × 1b = 16b 4b = 56b (2) 2 (X, Y) (16, 8) 2 × 8 ×2 (A, B) (16, 8) 2 × 8 × 1b = 16b 5b = 80b 2 (X, Y) (16, 8) 2 × 8 × 1(A) (31, 23) 1 × 23 × 1b = 16b 5b = 115b 2 (X, Y) (32, 16) 2 × 16 × 2(A, B) (15, 7) 2 × 7 × 1b = 32b 4b = 56b (3) 2 (X, Y) (36, 20) 2 × 20 ×4 (A, B, (15, 7) (4 × 7 × 4b) + 1b = 40b C, D) + 1 (12, 4) (1 × 4 × (E)4b) = 128b (4) 2 (X, Y) (36, 20) 2 × 20 × 4 (A, B, (18, 10) 4 × 10 × 1b= 40b C, D) 5b = 200b 2 (X, Y) (36, 20) 2 × 20 × 3 (A, B, (24, 16) 3 ×16 × 1b = 40b C) 5b = 240b 2 (X, Y) (36, 20) 2 × 20 × 2 (A, B) (31, 23)2 × 23 × 1b = 40b 5b = 230b

2.8 Cyclic Codes for Coordinate Encoding 2.8.1 Background

A maximum-length LFSR (linear feedback shift register) produces asoutput a so-called m-sequence with a length of 2^(k)−1, in which everypossible non-zero register value appears once before the sequencerepeats. Because each k-bit value appears exactly once in them-sequence, a k-bit window into a known m-sequence yields a unique k-bitsubsequence which in turn can be interpreted as a unique position withinthe m-sequence. Because of the cyclic nature of an m-sequence, a k-bitwindow onto a recurring m-sequence yields a locally unique position,i.e. modulo the length n of the m-sequence.

Position decoding via a k-symbol window onto a recurring m-sequence oflength 2^(k)−1 does not allow error detection or correction. However,position decoding via an n-symbol window onto a recurring cycliccodeword of length n does allow error detection and correction.

An arbitrary number of copies of a codeword of a cyclic (n, k) code Ccan be concatenated to form a sequence of arbitrary length. A window ofsize n onto the sequence is then guaranteed to yield a codeword of C. Ifthe code is designed to contain exactly n codewords, then the dimensionof the code is, by definition, k=log_(q)n. If the code is designed sothat all n codewords belong to the same and only cycle, then the windowwill yield n different codewords at n successive positions. Since thereis a direct correspondence between a codeword and a position in thesequence (modulo n), each codeword can be uniquely mapped to one of n(relative) positions. Significantly, a position can be determined evenin the presence of up to [(d_(min)−1)/2] symbol errors.

As discussed in U.S. Pat. No. 7,082,562, the contents of which is hereinincorporated by reference, the present Applicant refers to such a codeas a “cyclic position code”. Any codeword of a cyclic position codedefines the code. A cyclic position code is not a linear code, since itdoes not contain the zero vector. However, it is useful to use theterminology of linear codes in the following discussion. Many goodcyclic position codes are linear codes with the zero vector removed.

The cyclic shifts of a binary m-sequence of length 2^(k)−1 constituteall of the non-zero codewords of a linear cyclic code of lengthn=2^(k)−1, dimension k, and minimum distance d_(min)=2^(k)−1(MacWilliams, F. J. and N. J. A. Sloane, “Pseudo-Random Sequences andArrays”, Proceedings of the IEEE, Vol. 64, No. 12, December 1976).

More generally, m-sequences define a subset of the set of simplex codes.The simplex codes have length n=4m−1 and minimum distanced_(min)=(n+1)/2=2m. As implied by the name, the codewords of a simplexcode define the equidistant vertices of an n-simplex. The minimum andmaximum distances of a simplex code are therefore the same. For n prime,the Paley construction can be used to construct a cyclic simplex codeusing quadratic residues [MacWilliams, F. J. and N. J. A. Sloane, TheTheory of Error-Correcting Codes, North-Holland, 1977; Wicker, S. B.,Error Control Systems for Digital Communication and Storage, PrenticeHall, 1995]. For n prime or d_(min)=2^(k)−1, then, a simplex code iscyclic and therefore defines a cyclic position code.

A cyclic simplex code of length n=4m−1 defines an optimal cyclicposition code in the sense that it has the largest minimum distancepossible not only for its length but for any length

n<4(m+1)−1.

A w-bit window onto a cyclic simplex code also defines a cyclic positioncode. In this case the average distance within the window is:

avg(d(w))=w d _(min) /n

The minimum distance within the window converges with the averagedistance within the window (and ultimately the minimum distance of thecode) as the window size approaches the code length:

d_(min)(w)→avg(d(w))→d_(min) as w→n

For the same window size w, a larger code size n implies a smallerminimum distance d_(min)(w) within the window.

2.8.2 Types of Coordinate Encoding

When a Reed-Solomon coordinate codeword is spatially distributedthroughout a tag (without replication), it becomes impractical torecover the entire codeword from an imaging window arbitrarily alignedwith the tag pattern. The imaging window would be required to have adiameter of at least two tag diagonals in order to guarantee acquisitionof a complete non-replicated coordinate codeword. Alternatively, theApplicant has described symbol arrangements whereby at least some X datasymbols are positioned in a column of the tag, and at least some Y datasymbols are positioned in a row of the tag (NPT087US). Symbolarrangements of this type can obviate at least some replication ofcoordinate data symbols whilst still allowing a substantially tag-sizedimaging window. However, special symbol arrangements of this typeinevitably constrain the design of tags.

However, if the coordinate codeword is encoded using an underlyingcyclic code then it becomes possible to reconstruct a valid codewordfrom fragments of adjacent tags' codewords. A coordinate codeword sizeof w bits corresponds to a w-bit window onto an underlying cyclic codeof length n.

There are two ways to encode the coordinates of adjacent tags. Assuminga codeword size of w bits, adjacent tags can either encode successivew-bit segments of the underlying code, or adjacent tags can encode w-bitsegments of the underlying code shifted one bit relative to each other.

2.8.3 Adjacent Tags Encoding One-Bit Shifted Subsequences

This approach has the advantage that the dimension of the code, whichdetermines its spatial extent, is minimized. Furthermore, as notedabove, the minimum distance of a windowed cyclic position code increaseswith decreasing code dimension, so it is advantageous to minimize thecode dimension. This approach nominally has the disadvantage that itsometimes only allows w−1 bits of the cyclic position code to berecovered from the window. However, as illustrated in Table 5, this doesnot necessarily imply a reduction in the minimum distance within thewindow.

The alternative approach, whereby adjacent tags encode successive w-bitsegments of the underlying code, has the advantage that it always allowsw bits of the cyclic position code to be recovered from the window.However, this is usually outweighed by the reduction in minimum distancethat the larger required code dimension entails.

Assuming binary cyclic position codes for the x and y coordinatesconsists of the following

bit sequences respectively:

(x_(n-1), x_(n-2), . . . , x₁, x₀)

(y_(n-1), y_(n-2), . . . , y₁, y₀)

In the one-bit shifted approach, the ith tag in the x direction(counting from the left) and jth tag in the y direction (counting fromthe top) encodes the following w-bit subsequences:

(x_(i+w-1), x_(i+w-2), . . . , x_(i+1), x_(i))

(y_(j+w-1), y_(j+w-2), . . . , y_(j+1), y_(j))

32-Bit Coordinate Codeword Example

FIG. 9 shows the layout of a 32-bit x-coordinate codeword (i.e. withw=32) in tag 4B, where, for the ith tag in the x direction, symbol X0encodes bit x_(i) and symbol X31 encodes bit x_(i+31).

FIG. 10 shows the layout of a 32-bit y-coordinate codeword (i.e. withw=32) in tag 4B, where, for the jth tag in the y direction, symbol Y0encodes bit y_(j) and symbol Y31 encodes bit y_(j+31).

The codeword layout in FIGS. 7 and 8 guarantees that a square24-macrodot window onto the coding pattern will always acquirecontiguous 31-bit or 32-bit subsequences from the two cyclic positioncodes used to encode the x and y coordinates.

A 24-macrodot window corresponds to 20 macrodot units (the length l ofthe tag) plus four macrodot units (the length q of a symbol). Hence, the24-macrodot window guarantees that pulse-position modulated values aredecoded from spatially-coherent samples (i.e. from a whole symbol asopposed to partial symbols at opposite sides of the field of view).

The symbols in FIG. 9 are arranged in columns, which may overlappartially with each other. A 1^(st) column contains symbols X0 and X1; a2^(nd) column contains symbols X2 and X3; a 3^(rd) column contains X4,X5, X6 and X7; a 4^(th) column contains symbols X8, X9, X10 and X11; a5^(th) column contains symbols X12 and X13 etc. The width v of eachcolumn corresponds to the length or width of each symbol, depending onthe orientation of symbols within the column. Hence, the maximum width vof each column is 4 macrodots, corresponding to the length of onesymbol.

Likewise, the symbols in FIG. 10 are arranged in rows, which may overlappartially with each other. A 1^(st) row contains symbols Y0 and Y1; a2^(nd) row contains symbols Y2 and Y3; a 3^(rd) row contains Y4, Y5, Y6and Y7; a 4^(th) row contains symbols Y8, Y9, Y10 and Y11; a 5^(th) rowcontains symbols Y12 and Y13 etc. The width v of each column correspondsto the length or width of each symbol, depending on the orientation ofsymbols within the column. Hence, the maximum width v of each row is 4macrodots, corresponding to the length of one symbol.

Unless the imaging window coincides precisely with the beginning of atag or the beginning of certain rows and columns, then a 31-bitsubsequence will be acquired from the imaging window rather than thefull 32-bit subsequence. For example, a 24-macrodot imaging windowbeginning 1 macrodot from the left-hand edge of the tag in FIG. 9 (i.e.a window beginning in the middle of the 1 ^(st) column containing X0 andX1) will acquire symbols X4 to X31 from that tag (a first imaged tag),and symbols X0 to X3 from an adjacent tag to the right (a second imagedtag). Since the second imaged tag contains a 32-bit subsequence shiftedby one bit relative to the first imaged tag, then symbol X1 in thesecond imaged tag corresponds to X0 in the first imaged tag; symbol X2in the second imaged tag corresponds to X1 in the first imaged tag; andsymbol X3 in the second imaged tag corresponds to X2 in the first imagedtag. Hence, a contiguous 31-bit subsequence may be assembled, whichconsists of X0-X2 and X4-X31 in the first imaged tag. Although one bit(X3) is missing from this acquired subsequence, there is stillsufficient data to determine a maximally likelihood offset in the cycliccode and, hence, the x-coordinate codeword of the first imaged tag.

Of course, similar considerations apply to the y-coordinate codewordencoded by symbols Y0-Y31 in FIG. 10. Accordingly, any 24-macrodotsquare window is sufficient to acquire at least a 31-bit subsequence ofeach off the two underlying code used to encode the x- andy-coordinated. Hence, an x-coordinate codeword and y-coordinate codewordmay be determined from each 24-macrodot imaging window.

FIG. 11 and FIG. 12 show possible layouts of corresponding common A andB Reed-Solomon codewords defined over GF(2⁴) (assuming a 3-9PPMencoding). Combining FIGS. 7 to 10, it will be appreciated that each PPMdata symbol in the tag is a merged symbol, as described in Section 2.7,encoding a 1-bit X data symbol from the x-coordinate codeword, a 1-bit Ydata symbol from the y-coordinate codeword and either a multi-bit Asymbol from a common A Reed-Solomon codeword or a multi-bit B symbolfrom a common B Reed-Solomon codeword.

As noted earlier, any Reed-Solomon symbols corrected in the A and Bcodewords can be used to flag erasures in corresponding X and Y symbolsduring decoding.

16-Bit Coordinate Codeword Example

FIG. 13 shows the layout of a 16-bit x-coordinate codeword (i.e. withw=16) in tag 4B, where, for the ith tag in the x direction, symbol X0encodes bit and symbol encodes bit x_(i) and symbol X15 encodes bitx_(i+15).

FIG. 14 shows the layout of a 16-bit y-coordinate codeword (i.e. withw=16) in tag 4B, where, for the jth tag in the y direction, symbol Y0encodes bit y_(j) and symbol Y15 encodes bit y_(j+15).

Again, the codeword layout in FIGS. 11 and 12 guarantees that a24-macrodot window onto the tag pattern will always acquire contiguous15-bit or 16-bit subsequences from the two cyclic position codes used toencode the x and y coordinates.

FIG. 11 and FIG. 12 show possible layouts of corresponding common A andB codewords defined over GF(2⁴) (assuming a 2-9PPM encoding), or overGF(2⁵) (assuming a 3-9PPM encoding). Combining FIGS. 13 and 14 withFIGS. 11 and 12, it will be appreciated that each PPM data symbol in thetag is a merged symbol, as described in Section 2.7. Some merged PPMdata symbols encode a 1-bit X data symbol from the x-coordinate codewordand multi-bit A symbol from a common A Reed-Solomon codeword. Somemerged PPM data symbols encode a 1-bit Y data symbol from they-coordinate codeword a multi-bit B symbol from a common B Reed-Solomoncodeword.

2.8.4 Adjacent Tags Encoding Successive Subsequences

In this approach, any given tag contains a w-bit subsequencecorresponding to offset i in the cyclic code sequence. Adjacent tags oneither side of the given tag contain w-bit subsequences corresponding tooffsets (i+w) and (i−w) in the cyclic code sequence. Hence, adjacenttags contain successive w-bit subsequences of the underlying codesequence, rather than 1-bit shift subsequences as described in Section2.8.3.

As noted above, this approach has the advantage that it always allows wbits of the cyclic position code to be recovered from the window—thereis no potential loss of 1 bit from any w-bit subsequence acquired fromthe 24-macrobit imaging window described in Section 2.8.3. Moreover,determination of fractional tag coordinates is possible, since an offsetin the underlying code may correspond to a column or row within a tag,rather than just a particular tag. However, the determination offractional tag coordinates may only have limited usefulness, becausesimilar information could potentially be derived from the translationcodewords.

The layout of coordinate codeword symbols and common codeword symbols intag 4B may be the same as those used in FIGS. 9 to 14, as described inSection 2.8.3.

Hence, it will be appreciated that each PPM data symbol in tags usingthe successive subsequence approach may be a merged symbol, as describedin Section 2.7. A merged symbol may encode at least one of: a 1-bit Xdata symbol from an x-coordinate codeword, a 1-bit Y data symbol from ay-coordinate codeword and a multi-bit symbol from a common Reed-Solomoncodeword.

Likewise, any Reed-Solomon symbols corrected in the common codeword(s)can be used to flag erasures in corresponding X and Y symbols duringdecoding.

2.8.5 Optimal Simplex Codes

Table 5 defines some optimal simplex codes for cyclic position coding.These are optimal in the sense that the minimum distance for both windowsizes is maximized.

TABLE 5 Some optimal simplex codes for cyclic position coding code coded_(min) d_(min) dimension size spatial primitive (w = (w = (k) (n)extent^(a) polynomial 15, 16) 31, 32) 8 255 0.6 m 1, 0001, 1101 4  (9)1, 1000, 0111 (3) 11 9 511 1.2 m 10, 0001, 1011  3 10 10 1023 2.4 m 111,1111, 1001  ^(a)assuming a minimum macrodot spacing of 120 μm

The primitive polynomial refers to the polynomial used to generate thecode in an LFSR, since it is impractical to reproduce the entire code intable format. The primitive polynomial used to generate simplex codesequences will be readily understood by the person skilled in the art.

2.9 Reed-Solomon Encoding

Data encoded by common codeword(s) is encoded using a Reed-Solomon codedefined over GF(2⁴), GF(2⁵) or GF(2⁶). The code has a natural length nof 15, 31 or 63, respectively. The dimension k of the code is chosen tobalance the error correcting capacity and data capacity of the code,which are (n−k)/2 and k symbols respectively.

The code may be punctured, by removing high-order redundancy symbols, toobtain a code with reduced length and reduced error correcting capacity.The code may also be shortened, by replacing high-order data symbolswith zeros, to obtain a code with reduced length and reduced datacapacity. Both puncturing and shortening can be used to obtain a codewith particular parameters. Shortening is preferred, where possible,since this avoids the need for erasure decoding. For example, some ofthe Reed-Solomon codes described in Table 4 are shortened and/orpunctured codes.

The code has one of the following primitive polynomials, respectively:

P ₄(x)=x ⁴ +x+1

p ₅(x)=x ⁵ +x ²+1

p ₆(x)=x ⁶ +x+1

The code has the following generator polynominal:

${g(x)} = {\prod\limits_{i = 1}^{n - k}\left( {x + \alpha^{\prime}} \right)}$

For a detailed description of Reed-Solomon codes, refer to Wicker, S. B.and V. K. Bhargava, eds., Reed-Solomon Codes and Their Applications,IEEE Press, 1994.

As shown in FIG. 15, redundancy coordinates r_(i) and data coordinatesd_(i) of the code are indexed from left to right according to the powerof their corresponding polynomial terms. The symbols X_(i) of a completecodeword are indexed from right to left to match the bit order of thedata. The bit order within each symbol is the same as the overall bitorder.

The region ID is protected by a 16-bit cyclic redundancy check (CRC).This provides an added layer of error detection after Reed-Solomon errorcorrection, in case a codeword containing a part of the region ID ismis-corrected.

The CRC has the following generator polynomial:

g(x)=x ¹⁶ +x ¹² +x ⁵+1

The CRC is initialised to 0xFFFF. The most significant bit of the regionID is treated as the most significant coefficient of the datapolynomial.

2.10 Tag Coordinate Space

The tag coordinate space has two orthogonal axes labelled x and yrespectively. When the positive x axis points to the right then thepositive y axis points down.

The surface coding does not specify the location of the tag coordinatespace origin on a particular tagged surface, nor the orientation of thetag coordinate space with respect to the surface. This information isapplication-specific. For example, if the tagged surface is a sheet ofpaper, then the application which prints the tags onto the paper mayrecord the actual offset and orientation, and these can be used tonormalise any digital ink subsequently captured in conjunction with thesurface.

The position encoded in a tag is defined in units of tags and is definedto be the center of the top left target. The origin of a particular tagpattern is therefore the center of the top left target of the tag thatencodes coordinate pair (0, 0).

The surface coding is optionally displaced from its nominal positionrelative to the surface by an amount derived from the region ID. Thisensures that the utilisation of a pagewidth digital printhead used toprint the surface coding is uniform. The displacement of the surfacecoding is negative, hence the displacement of the region described bythe surface coding is positive relative to the surface coding. Themagnitude of the displacement is the region ID modulo the width of thetag in 1600 dpi dots (i.e. 240). To accommodate non-1600 dpi printersthe actual magnitude of the displacement may vary from its nominal valueby up to half the dot pitch of the printer.

2.11 Tag Information Content 2.11.1 Field Definitions

Table 6 defines the information fields embedded in the surface coding.

TABLE 6 Field Definitions field description unique to tag active areaflag A flag indicating whether the area^(a) immediately surrounding atag intersects an active area. x coordinate The unsigned x coordinate ofthe tag^(b). y coordinate The unsigned y coordinate of the tag^(b).common to tagged region encoding format The format of the encoding. 0:the present encoding. Other values are reserved region flags Flagscontrolling the interpretation of region data (see Table 7). macrodotsize ID The ID of the macrodot size. region ID The ID of the regioncontaining the tags. secret-key An optional secret-key signature of theregion. signature CRC (Cyclic A CRC of region ID (see Section 2.9).Redundancy Check) ^(a)the diameter of the area, centered on the tag, isnominally 2.5 times the diagonal size of the tag; this is to accommodatethe worst-case distance between the nib position and the imaged tag

An active area is an area within which any captured input should beimmediately forwarded to the corresponding Netpage server 10 forinterpretation. This also allows the Netpage server 10 to signal to theuser that the input has had an immediate effect. Since the server hasaccess to precise region definitions, any active area indication in thesurface coding can be imprecise so long as it is inclusive.

TABLE 7 Region flags bit meaning 0 Region is interactive, i.e. x andy-coordinates are present. 1 Region is active, i.e. the entire region isan active area. Otherwise active areas are identified by individualtags' active area flags. 2 Region ID is not serialized^(a). 3 Region hassecret-key signature (see Section 2.13) 4 Region has embedded data. 5Embedded data is a public-key signature (see Sections 2.12 and 2.13). 6Region has long coordinates^(b). 7 Region has a long region ID^(c). 8Region ID is an EPC. 9 Region is displaced according to region ID (seeSection 2.10) ^(a)For an EPC this means that the serial number isreplaced by a layout number, to allow the package design associated witha product to vary over time (see US 2007/0108285, the contents of whichis herein incorporated by reference). ^(b)Hence the X and Y Reed-Solomoncodewords have less redundancy. ^(c)Hence, the B, C and D Reed-Solomoncodewords have less redundancy.

Codeword E (when present) either contains a data fragment or asecret-key signature. These are described in Section 2.12 and Section2.13 respectively. The secret-key signature is present in a particulartag if the <region has secret-key signature> flag in the region flags isset, and the tag's active area flag is set. The data fragment is presentin a particular tag if the <region contains embedded data> flag in theregion flags is set and the tag does not already contain a secret-keysignature.

When the region flags indicate that a particular codeword is absent,then the codeword is not coded in the tag pattern, i.e. there are nomacrodots representing the codeword. This applies to the X, Y and Ecodewords i.e. the X and Y codewords are present if the <region isinteractive> flag in the region flags is set. The E codeword is presentif a secret-key signature or data fragment is present.

2.12 Embedded Data Object

If the <region has embedded data> flag in the region flags is set thenthe surface coding contains embedded data. The embedded data is encodedin multiple contiguous tags' data fragments, and is replicated in thesurface coding as many times as it will fit.

The embedded data is encoded in such a way that a random and partialscan of the surface coding containing the embedded data can besufficient to retrieve the entire data. The scanning system reassemblesthe data from retrieved fragments, and reports to the user whensufficient fragments have been retrieved without error.

As shown in Table 8, each block may have a data capacity of 176-bits.The block data is encoded in the data fragments of a contiguous group ofsix tags arranged in a 3 ×2 rectangle.

The block parameters are as defined in Table 8. The E codeword of eachtag may encode a fragment of the embedded data.

TABLE 8 Block parameters parameter value description w 3 The width ofthe block, in tags h 2 The height of the block, in tags. b 176 The datacapacity of the block, in bits

If the E codeword of a particular tag does not contain a fragment of theembedded data, then the pen 400 can discover this implicitly by thefailure of the codeword to decode, or explicitly from the tag's activearea flag.

Data of arbitrary size may be encoded into a superblock consisting of acontiguous set of blocks, typically arranged in a rectangle. The size ofthe superblock may be encoded in each block.

The superblock is replicated in the surface coding as many times as itwill fit, including partially along the edges of the surface coding.

The data encoded in the superblock may include, for example, moreprecise type information, more precise size information, and moreextensive error detection and/or correction data.

2.13 Digital Signatures

If the <region has a secret-key signature> flag in the region flags isset, then the region has a secret-key digital signature. In an onlineenvironment the secret-key signature can be verified, in conjunctionwith the region ID, by querying a server with knowledge of thesecret-key signature or the corresponding secret key.

If the region contains embedded data and the <embedded data is apublic-key signature> flag in the region flag is set, then the surfacecoding contains an embedded public-key digital signature of the regionID.

In an online environment any number of signature fragments can be used,in conjunction with the region ID and optionally the secret-keysignature, to validate the public-key signature by querying a serverwith knowledge of the full public-key signature or the correspondingprivate key.

The actual length and type of the signature are determined from theregion ID during signature verification i.e. typically from apreviously-retrieved digital signature associated with a sequence ofregion IDs.

Digital signature verification is discussed in the Applicant's USPublication No. 2007/0108285, the contents of which are hereinincorporated by reference.

2.14 Tag Imaging and Decoding

The minimum imaging field of view required to guarantee acquisition ofdata from an entire tag 4B has a diameter of 33.9 s (i.e. ((2×10)+4)√2s), allowing for arbitrary rotation and translation of the surfacecoding in the field of view. Notably, the imaging field of view does nothave to be large enough to guarantee capture of an entire tag—thearrangement of the data symbols within each tag ensures that a anysquare portion of length (l+4 s) captures the requisite information infull from spatially coherent samples, irrespective of whether a wholetag is actually visible in the field-of-view. As used herein, l isdefined as the length of a tag.

In terms of imaging the coding pattern, the imaging field-of-view istypically a circle. Accordingly, the imaging field-of-view shouldpreferably have diameter of at least (l+4 s)√2 and less than two tagdiameters. Importantly, the field-of-view is not required to be at leasttwo tag diameters, in contrast with prior art tag designs, because it isnot essential in the present invention to capture an entire tag in thefield of view.

The extra four macrodot units ensure that pulse-position modulatedvalues can be decoded from spatially coherent samples i.e. from wholesymbols rather than partial symbols at opposite sides of the imagingfield of view.

By analogy, the minimum imaging field of view required to guaranteeacquisition of data from an entire tag 4A has a diameter of 48.1 s (i.e.((3×10)+4)√2 s).

In the present context, a “tag diameter” is given to mean the length ofa tag diagonal.

FIG. 16 shows a tag image processing and decoding process flow up to thestage of sampling registration symbols and decoding the translationcodewords. Firstly, a raw image 802 of the tag pattern is acquired (at800), for example via an image sensor such as a CCD image sensor, CMOSimage sensor, or a scanning laser and photodiode image sensor. The rawimage 802 is then typically enhanced (at 804) to produce an enhancedimage 806 with improved contrast and more uniform pixel intensities.Image enhancement may include global or local range expansion,equalization, and the like. The enhanced image 806 is then typicallyfiltered (at 808) to produce a filtered image 810. Image filtering mayconsist of low-pass filtering, with the low-pass filter kernel sizetuned to obscure macrodots 302 but to preserve targets 301. Thefiltering step 808 may include additional filtering (such as edgedetection) to enhance target features 301. Encoding of data symbols 304using pulse position modulation (PPM) provides a more uniform codingpattern 3 than simple binary dot encoding (as described in, for example,U.S. Pat. No. 6,832,717). Advantageously, this helps separate targets301 from data areas, thereby allowing more effective low-pass filteringof the PPM-encoded data compared to binary-coded data.

Following low-pass filtering, the filtered image 810 is then processed(at 812) to locate the targets 301. This may consist of a search fortarget features whose spatial inter-relationship is consistent with theknown geometry of the tag pattern (i.e. targets positioned at thecorners of square cells). Candidate targets may be identified directlyfrom maxima in the filtered image 810, or may be the subject of furthercharacterization and matching, such as via their (binary or grayscale)shape moments (typically computed from pixels in the enhanced image 806based on local maxima in the filtered image 810), as described in U.S.Pat. No. 7,055,739, the contents of which is herein incorporated byreference.

The identified targets 301 are then assigned (at 816) to a target grid818. Each cell of the grid 818 contains a symbol group 303, and severalsymbol groups will of course be visible in the image. At this stage,individual tags 4 will not be identifiable in the target grid 818, sincethe targets 301 do not themselves demarcate one tag from another.

To allow macrodot values to be sampled accurately, the perspectivetransform of the captured image must be inferred. Four of the targets301 are taken to be the perspective-distorted corners of a square ofknown size in tag space, and the eight-degree-of-freedom perspectivetransform 822 is inferred (at 820), based on solving the well-understoodequations relating the four tag-space and image-space point pairs.Calculation of the 2D perspective transform is described in detail in,for example, Applicant's U.S. Pat. No. 6,832,717, the contents of whichis herein incorporated by reference.

Since each image will typically contain at least 9 targets arranged in asquare grid, the accuracy of calculating the 2D perspective transform isimproved compared to the Applicant's previous tag designs described in,for example, U.S. Pat. No. 6,832,717.

The inferred tag-space to image-space perspective transform 822 is usedto project each known macrodot position in tag space into image space.Since all bits in the tags are represented by PPM-encoding, the presenceor absence of each macrodot 302 can be determined using a localintensity reference, rather than a separate intensity reference. Thus,PPM-encoding provides improved data sampling compared with pure binaryencoding.

The next stage determines a type of position-coding pattern being imagedby the pen 400 from a translation codeword. In other words, this stagedistinguishes a first position-coding pattern containing tags 4A (3×3)from a second position-coding pattern containing tags 4B (2×2) forsubsequent sampling and decoding.

Two or more orthogonal registration symbols (‘VRS’ and ‘FIRS’) aresampled (at 824), to allow decoding of the orthogonal translationcodewords and the orthogonal direction codewords. A flag symbol valuemay also be decoded subsequently from the decoded registration symbols.

Decoding of the orthogonal translation codewords (at 828) yields eithera (0, 1, 2) translation codeword or a (3, 4) translation codeword (at830).

Referring now to FIG. 17, the (0, 1, 2) translation codeword indicatesnine symbol groups per tag, thereby identifying (at 832A) the imagedposition-coding pattern as containing tags 4A. Alternatively, the (3, 4)translation codeword indicates four symbol groups per tag, therebyidentifying (at 832B) the imaged position-coding pattern as containingtags 4B.

Once the position-coding pattern has been identified at 832A or 832B,subsequent sampling and decoding proceeds in accordance with theposition-coding pattern thus identified. Accordingly, the decodedorthogonal translation codewords are used to determine the translationof tags(s) in the field of view relative to the target grid 818. Thisenables alignment of the tags 4A or 4B with the target grid 818, therebyallowing individual tag(s), or portions thereof, to be distinguished inthe coding pattern 3 in the field of view. In the first case, the tags4A (each containing nine symbol groups) are aligned (at 834A) with thetarget grid 818. In the second case, the tags 4B (each containing foursymbol groups) are aligned (at 834B) with the target grid 818.

Since each symbol group 303 contains orthogonal registration symbols,multiple translation codes can be decoded to provide robust translationdetermination. As described in Section 2.6, the translation code is acyclic position code. Since each row and each column of a tag contains Msymbol groups, the code has minimum distance M×M. This allows robustdetermination of the alignment of tags 4A or 4B with the target grid818. The alignment needs to be both robust and accurate since there aremany possible alignments when each tag contains multiple symbol groups303.

After the translation of symbol groups 303 relative to tags 4A or 4B hasbeen determined, then at least two orthogonal direction codes aredecoded (at 836A or 836B) to provide the orientation 838A or 838B. Asdescribed in Section 2.6, since N vertical registration symbols in a tagform a vertical direction code with minimum distance N, the verticaldirection code is capable of correcting (N−1)/2 errors. The horizontaldirection code is similarly capable of correcting (N−1)/2 errors using Nhorizontal registration symbols. Hence, orientation determination isvery robust and capable of correcting errors, depending on the number ofregistration symbols sampled.

Once initial imaging and decoding has yielded the 2D perspectivetransform, the orientation, and the translation of tag(s) relative tothe target grid, the data codewords can then be sampled and decoded (at840A or 840B) to yield the requisite decoded codewords 842A or 842B.

For example, decoding of data codewords from a tag 4B may proceed asfollows:

-   -   sample and decode common Reed-Solomon codeword (A)    -   determine encoding format, and reject unknown encoding    -   on decode error flag bad format sample    -   determine region ID Reed-Solomon codeword format from region        flags    -   verify CRC of region ID    -   on decode error flag bad region ID sample    -   detect any erroneous symbols in region ID Reed-Solomon common        codeword    -   determine region ID    -   sample and decode x and y coordinate Reed-Solomon codewords (X        and Y), treating any coordinate symbols co-encoded with the        detected erroneous symbols as erasures    -   determine tag x-y location from codewords    -   determine nib x-y location from tag x-y location and perspective        transform taking into account macrodot size (from macrodot size        ID)    -   encode region ID and nib x-y location in digital ink        (“interaction data”)

In practice, when decoding a sequence of images of a tag pattern, it isuseful to exploit inter-frame coherence to obtain greater effectiveredundancy.

Region ID decoding need not occur at the same rate as position decoding.

The skilled person will appreciate that the decoding sequence describedabove represents one embodiment of the present invention, based on asimple coding pattern containing only one common codeword (A) encodingthe region ID. However, it will, of course, be appreciated that theinteraction data sent from the pen 400 to the netpage system may includeother data e.g. digital signature (see Section 2.13), pen mode (see US2007/125860 incorporated herein by reference), orientation data, forcedata, pen ID, nib ID etc.

An example of interpreting interaction data, received by the netpagesystem from the netpage pen 400, is discussed briefly above inSection 1. A more detailed discussion of how the netpage system mayinterpret interaction data can be found in the Applicant'spreviously-filed applications (see, for example, US 2007/130117 and US2007/108285, the contents of which are herein incorporated byreference).

3. Netpage Pen 3.1 Functional Overview

The active sensing device of the netpage system may take the form of aclicker (for clicking on a specific position on a surface), a pointerhaving a stylus (for pointing or gesturing on a surface using pointerstrokes), or a pen having a marking nib (for marking a surface with inkwhen pointing, gesturing or writing on the surface). For a descriptionof various netpage sensing devices, reference is made to U.S. Pat. No.7,105,753; U.S. Pat. No. 7,015,901; U.S. Pat. No. 7,091,960; and USPublication No. 2006/0028459, the contents of each of which are hereinincorporated by reference.

It will be appreciated that the present invention may utilize anysuitable optical reader. However, the Netpage pen 400 will be describedherein as one such example.

The Netpage pen 400 is a motion-sensing writing instrument which worksin conjunction with a tagged Netpage surface (see Section 2). The penincorporates a conventional ballpoint pen cartridge for marking thesurface, an image sensor and processor for simultaneously capturing theabsolute path of the pen on the surface and identifying the surface, aforce sensor for simultaneously measuring the force exerted on the nib,and a real-time clock for simultaneously measuring the passage of time.

While in contact with a tagged surface, as indicated by the forcesensor, the pen continuously images the surface region adjacent to thenib, and decodes the nearest tag in its field of view to determine boththe identity of the surface, its own instantaneous position on thesurface and the pose of the pen. The pen thus generates a stream oftimestamped position samples relative to a particular surface, andtransmits this stream to the Netpage server 10. The sample streamdescribes a series of strokes, and is conventionally referred to asdigital ink (DInk). Each stroke is delimited by a pen down and a pen upevent, as detected by the force sensor. More generally, any dataresulting from an interaction with a Netpage, and transmitted to theNetpage server 10, is referred to herein as “interaction data”.

The pen samples its position at a sufficiently high rate (nominally 100Hz) to allow a Netpage server to accurately reproduce hand-drawnstrokes, recognise handwritten text, and verify hand-written signatures.

The Netpage pen also supports hover mode in interactive applications. Inhover mode the pen is not in contact with the paper and may be somesmall distance above the surface of the paper (or other substrate). Thisallows the position of the pen, including its height and pose to bereported. In the case of an interactive application the hover modebehaviour can be used to move a cursor without marking the paper, or thedistance of the nib from the coded surface could be used for toolbehaviour control, for example an air brush function.

The pen includes a Bluetooth radio transceiver for transmitting digitalink via a relay device to a Netpage server. When operating offline froma Netpage server the pen buffers captured digital ink in non-volatilememory. When operating online to a Netpage server the pen transmitsdigital ink in real time.

The pen is supplied with a docking cradle or “pod”. The pod contains aBluetooth to USB relay. The pod is connected via a USB cable to acomputer which provides communications support for local applicationsand access to Netpage services.

The pen is powered by a rechargeable battery. The battery is notaccessible to or replaceable by the user. Power to charge the pen can betaken from the USB connection or from an external power adapter throughthe pod. The pen also has a power and USB-compatible data socket toallow it to be externally connected and powered while in use.

The pen cap serves the dual purpose of protecting the nib and theimaging optics when the cap is fitted and signaling the pen to leave apower-preserving state when uncapped.

3.2 Ergonomics and Layout

FIG. 18 shows a rounded triangular profile gives the pen 400 anergonomically comfortable shape to grip and use the pen in the correctfunctional orientation. It is also a practical shape for accommodatingthe internal components. A normal pen-like grip naturally conforms to atriangular shape between thumb 402, index finger 404 and middle finger406.

As shown in FIG. 19, a typical user writes with the pen 400 at a nominalpitch of about 30 degrees from the normal toward the hand 408 when held(positive angle) but seldom operates a pen at more than about 10 degreesof negative pitch (away from the hand). The range of pitch angles overwhich the pen 400 is able to image the pattern on the paper has beenoptimised for this asymmetric usage. The shape of the pen 400 helps toorient the pen correctly in the user's hand 408 and to discourage theuser from using the pen “upside-down”. The pen functions “upside-down”but the allowable tilt angle range is reduced.

The cap 410 is designed to fit over the top end of the pen 400, allowingit to be securely stowed while the pen is in use. Multi colour LEDsilluminate a status window 412 in the top edge (as in the apex of therounded triangular cross section) of the pen 400 near its top end. Thestatus window 412 remains un-obscured when the cap is stowed. Avibration motor is also included in the pen as a haptic feedback system(described in detail below).

As shown in FIG. 20, the grip portion of the pen has a hollow chassismolding 416 enclosed by a base molding 528 to house the othercomponents. The ink cartridge 414 for the ball point nib (not shown)fits naturally into the apex 420 of the triangular cross section,placing it consistently with the user's grip. This in turn providesspace for the main PCB 422 in the center of the pen and for the battery424 in the base of the pen. By referring to FIG. 21A, it can be seenthat this also naturally places the tag-sensing optics 426 unobtrusivelybelow the nib 418 (with respect to nominal pitch). The nib molding 428of the pen 400 is swept back below the ink cartridge 414 to preventcontact between the nib molding 428 and the paper surface when the penis operated at maximum pitch.

As best shown in FIG. 21B, the imaging field of view 430 emerges througha centrally positioned IR filter/window 432 below the nib 418, and twonear-infrared illumination LEDs 434, 436 emerge from the two bottomcorners of the nib molding 428. Each LED 434, 436 has a correspondingillumination field 438, 440.

As the pen is hand-held, it may be held at an angle that causesreflections from one of the LED's that are detrimental to the imagesensor. By providing more than one LED, the LED causing the offendingreflections can be extinguished.

Specific details of the pen mechanical design can be found in USPublication No. 2006/0028459, the contents of which are hereinincorporated by reference.

3.3 Pen Feedback Indications

FIG. 22 is a longitudinal cross section through the center-line if thepen 400 (with the cap 410 stowed on the end of the pen). The penincorporates red and green LEDs 444 to indicate several states, usingcolours and intensity modulation. A light pipe 448 on the LEDs 444transmit the signal to the status indicator window 412 in the tubemolding 416. These signal status information to the user includingpower-on, battery level, untransmitted digital ink, network connectionon-line, fault or error with an action, detection of an “active area”flag, detection of an “embedded data” flag, further data sampling torequired to acquire embedded data, acquisition of embedded datacompleted etc.

A vibration motor 446 is used to haptically convey information to theuser for important verification functions during transactions. Thissystem is used for important interactive indications that might bemissed due to inattention to the LED indicators 444 or high levels ofambient light. The haptic system indicates to the user when:

-   -   The pen wakes from standby mode    -   There is an error with an action    -   To acknowledge a transaction

3.4 Pen Optics

The pen incorporates a fixed-focus narrowband infrared imaging system.It utilizes a camera with a short exposure time, small aperture, andbright synchronised illumination to capture sharp images unaffected bydefocus blur or motion blur.

TABLE 9 Optical Specifications Magnification ^(~)0.225 Focal length oflens 6.0 mm Viewing distance 30.5 mm Total track length 41.0 mm Aperturediameter 0.8 mm Depth of field ^(~)/6.5 mm Exposure time 200 usWavelength 810 nm Image sensor size 140 × 140 pixels Pixel size 10 umPitch range ^(~)15 to 45 deg Roll range ^(~)30 to 30 deg Yaw range   0to 360 deg Minimum sampling rate 2.25 pixels per macrodot Maximum penvelocity 0.5 m/s ¹Allowing 70 micron blur radius ²Illumination andfilter ³Pitch, roll and yaw are relative to the axis of the pen

Cross sections showing the pen optics are provided in FIGS. 23A and 23B.An image of the Netpage tags printed on a surface 548 adjacent to thenib 418 is focused by a lens 488 onto the active region of an imagesensor 490. A small aperture 494 ensures the available depth of fieldaccommodates the required pitch and roll ranges of the pen 400.

First and second LEDs 434 and 436 brightly illuminate the surface 549within the field of view 430. The spectral emission peak of the LEDs ismatched to the spectral absorption peak of the infrared ink used toprint Netpage tags to maximise contrast in captured images of tags. Thebrightness of the LEDs is matched to the small aperture size and shortexposure time required to minimise defocus and motion blur.

A longpass IR filter 432 suppresses the response of the image sensor 490to any coloured graphics or text spatially coincident with imaged tagsand any ambient illumination below the cut-off wavelength of the filter432. The transmission of the filter 432 is matched to the spectralabsorption peak of the infrared ink to maximise contrast in capturedimages of tags. The filter also acts as a robust physical window,preventing contaminants from entering the optical assembly 470.

3.5 Pen Imaging System

A ray trace of the optic path is shown in FIG. 24. The image sensor 490is a CMOS image sensor with an active region of 140 pixels squared. Eachpixel is 10 μm squared, with a fill factor of 93%. Turning to FIG. 25,the lens 488 is shown in detail. The dimensions are:

-   -   D=3 mm    -   R1=3.593 mm    -   R2=15.0 mm    -   X=0.8246 mm    -   Y=1.0 mm    -   Z=0.25 mm

This gives a focal length of 6.15 mm and transfers the image from theobject plane (tagged surface 548) to the image plane (image sensor 490)with the correct sampling frequency to successfully decode all imagesover the specified pitch, roll and yaw ranges. The lens 488 is biconvex,with the most curved surface facing the image sensor. The minimumimaging field of view 430 required to guarantee acquisition ofsufficient tag data with each interaction is dependent on the specificcoding pattern. The required field of view for the coding pattern of thepresent invention is described in Section 2.10.

The required paraxial magnification of the optical system is defined bythe minimum spatial sampling frequency of 2.25 pixels per macrodot forthe fully specified tilt range of the pen 400, for the image sensor 490of 10 μm pixels. Typically, the imaging system employs a paraxialmagnification of 0.225, the ratio of the diameter of the inverted imageat the image sensor to the diameter of the field of view at the objectplane, on an image sensor 490 of minimum 128×128 pixels. The imagesensor 490 however is 140×140 pixels, in order to accommodatemanufacturing tolerances. This allows up to+/−120 μm (12 pixels in eachdirection in the plane of the image sensor) of misalignment between theoptical axis and the image sensor axis without losing any of theinformation in the field of view.

The lens 488 is made from Poly-methyl-methacrylate (PMMA), typicallyused for injection moulded optical components. PMMA is scratchresistant, and has a refractive index of 1.49, with 90% transmission at810 nm. The lens is biconvex to assist moulding precision and features amounting surface to precisely mate the lens with the optical barrelmolding 492.

A 0.8 mm diameter aperture 494 is used to provide the depth of fieldrequirements of the design.

The specified tilt range of the pen is to 45.0 degree pitch, with a rollrange of 30.0 to 30.0 degrees. Tilting the pen through its specifiedrange moves the tilted object plane up to 6.3 mm away from the focalplane. The specified aperture thus provides a corresponding depth offield of /6.5 mm, with an acceptable blur radius at the image sensor of16 μm.

Due to the geometry of the pen design, the pen operates correctly over apitch range of 33.0 to 45.0 degrees.

Referring to FIG. 26, the optical axis 550 is pitched 0.8 degrees awayfrom the nib axis 552. The optical axis and the nib axis converge towardthe paper surface 548. With the nib axis 552 perpendicular to the paper,the distance A between the edge of the field of view 430 closest to thenib axis and the nib axis itself is 1.2 mm.

The longpass IR filter 432 is made of CR-39, a lightweight thermosetplastic heavily resistant to abrasion and chemicals such as acetone.Because of these properties, the filter also serves as a window. Thefilter is 1.5 mm thick, with a refractive index of 1.50. Each filter maybe easily cut from a large sheet using a CO₂ laser cutter.

3.6 Electronics Design

TABLE 10 Electrical Specifications Processor ARM7 (Atmel AT91FR40162)running at 80 MHz with 256 kB SRAM and 2 MB flash memory Digital inkstorage 5 hours of writing capacity Bluetooth 1.2 Compliance USBCompliance 1.1 Battery standby time 12 hours (cap off), >4 weeks (capon) Battery writing time 4 hours of cursive writing (81% pen down,assuming easy offload of digital ink) Battery charging 2 hours timeBattery Life Typically 300 charging cycles or 2 years (whichever occursfirst) to 80% of initial capacity. Battery ~340 mAh at 3.7 V,Lithium-ion Polymer (LiPo) Capacity/Type

FIG. 27 is a block diagram of the pen electronics. The electronicsdesign for the pen is based around five main sections. These are:

-   -   the main ARM7 microprocessor 574,    -   the image sensor and image processor 576,    -   the Bluetooth communications module 578,    -   the power management unit IC (PMU) 580 and    -   the force sensor microprocessor 582.

3.6.1 Microprocessor

The pen uses an Atmel AT91FR40162 microprocessor (see Atmel, AT91 ARMThumb Microcontrollers—AT91FR40162 Preliminary,http://www.keil.com/dd/docs/datashts/atmel/at91fr40162.pdf) running at80 MHz. The AT91FR40162 incorporates an ARM7 microprocessor, 256 kBytesof on-chip single wait state SRAM and 2 MBytes of external flash memoryin a stack chip package.

This microprocessor 574 forms the core of the pen 400. Its dutiesinclude:

-   -   setting up the Jupiter image sensor 584,    -   decoding images of Netpage coding pattern (see Section 2.14),        with assistance from the image processing features of the image        sensor 584, for inclusion in the digital ink stream along with        force sensor data received from the force sensor microprocessor        582,    -   setting up the power management IC (PMU) 580,    -   compressing and sending digital ink via the Bluetooth        communications module 578, and    -   programming the force sensor microprocessor 582.

The ARM7 microprocessor 574 runs from an 80 MHz oscillator. Itcommunicates with the Jupiter image sensor 576 using a UniversalSynchronous Receiver Transmitter (USRT) 586 with a 40 MHz clock. TheARM7 574 communicates with the Bluetooth module 578 using a UniversalAsynchronous Receiver Transmitter (UART) 588 running at 115.2 kbaud.Communications to the PMU 580 and the Force Sensor microProcessor (FSP)582 are performed using a Low Speed Serial bus (LSS) 590. The LSS isimplemented in software and uses two of the microprocessor's generalpurpose IOs.

The ARM7 microprocessor 574 is programmed via its JTAG port.

3.6.2 Image Sensor

The ‘Jupiter’ Image Sensor 584 (see US Publication No. 2005/0024510, thecontents of which are incorporated herein by reference) contains amonochrome sensor array, an analogue to digital converter (ADC), a framestore buffer, a simple image processor and a phase lock loop (PLL). Inthe pen, Jupiter uses the USRT's clock line and its internal PLL togenerate all its clocking requirements. Images captured by the sensorarray are stored in the frame store buffer. These images are decoded bythe ARM7 microprocessor 574 with help from the ‘Callisto’ imageprocessor contained in Jupiter. The Callisto image processor performs,inter alia, low-pass filtering of captured images (see Section 2.14 andUS Publication No. 2005/0024510) before macrodot sampling and decodingby the microprocessor 574.

Jupiter controls the strobing of two infrared LEDs 434 and 436 at thesame time as its image array is exposed. One or other of these twoinfrared LEDs may be turned off while the image array is exposed toprevent specular reflection off the paper that can occur at certainangles.

3.6.3 Bluetooth Communications Module

The pen uses a CSR BlueCore4-External device (see CSR,BlueCore4-External Data Sheet rev c, 6 Sep. 2004) as the Bluetoothcontroller 578. It requires an external 8 Mbit flash memory device 594to hold its program code. The BlueCore4 meets the Bluetooth v1.2specification and is compliant to v0.9 of the Enhanced Data Rate (EDR)specification which allows communication at up to 3 Mbps.

A 2.45 GHz chip antenna 486 is used on the pen for the Bluetoothcommunications.

The BlueCore4 is capable of forming a UART to USB bridge. This is usedto allow USB communications via data/power socket 458 at the top of thepen 456.

Alternatives to Bluetooth include wireless LAN and PAN standards such asIEEE 802.11 (Wi-Fi) (see IEEE, 802.11 Wireless Local Area Networks,http://grouper.ieee.org/groups/802/11/index.html), IEEE 802.15 (seeIEEE, 802.15 Working Group for WPAN,http://grouper.ieee.org/groups/802/15/index.html), ZigBee (see ZigBeeAlliance, http://www.zigbee.org), and WirelessUSB Cypress (seeWirelessUSB LR 2.4-GHz DSSS Radio SoC,http://www.cypress.com/cfuploads/img/products/cywusb6935.pdf), as wellas mobile standards such as GSM (see GSM Association,http://www.gsmworld.com/index.shtml), GPRS/EDGE, GPRS Platform,http://www.gsmworld.com/technology/gprs/index.shtml), CDMA (see CDMADevelopment Group, http:l/www.cdg.org/, and Qualcomm,http://www.qualcomm.com), and UMTS (see 3rd Generation PartnershipProject (3GPP), http://www. 3gpp.org).

3.6.4 Power Management Chip

The pen uses an Austria Microsystems AS3603 PMU 580 (see AustriaMicrosystems, AS3603 Multi-Standard Power Management Unit Data Sheetv2.0). The PMU is used for battery management, voltage generation, powerup reset generation and driving indicator LEDs and the vibrator motor.

The PMU 580 communicates with the ARM7 microprocessor 574 via the LSSbus 590.

3.6.5 Force Sensor Subsystem

The force sensor subsystem comprises a custom Hokuriku force sensor 500(based on Hokuriku, HFD-500 Force Sensor,http://www.hdk.co.jp/pdf/eng/e1381AA.pdf), an amplifier and low passfilter 600 implemented using op-amps and a force sensor microprocessor582.

The pen uses a Silicon Laboratories C8051F330 as the force sensormicroprocessor 582 (see Silicon Laboratories, C8051F330/1 MCU DataSheet, rev 1.1). The C8051F330 is an 8051 microprocessor with on chipflash memory, 10 bit ADC and 10 bit DAC. It contains an internal 24.5MHz oscillator and also uses an external 32.768 kHz tuning fork.

The Hokuriku force sensor 500 is a silicon piezoresistive bridge sensor.An op-amp stage 600 amplifies and low pass (anti-alias) filters theforce sensor output. This signal is then sampled by the force sensormicroprocessor 582 at 5 kHz.

Alternatives to piezoresistive force sensing include capacitive andinductive force sensing (see Wacom, “Variable capacity condenser andpointer”, US Patent Application 20010038384, filed 8 Nov. 2001, andWacom, Technology, http://www.wacom-components.com/english/tech.asp).

The force sensor microprocessor 582 performs further (digital) filteringof the force signal and produces the force sensor values for the digitalink stream. A frame sync signal from the Jupiter image sensor 576 isused to trigger the generation of each force sample for the digital inkstream. The temperature is measured via the force sensormicroprocessor's 582 on chip temperature sensor and this is used tocompensate for the temperature dependence of the force sensor andamplifier. The offset of the force signal is dynamically controlled byinput of the microprocessor's DAC output into the amplifier stage 600.

The force sensor microprocessor 582 communicates with the ARM7microprocessor 574 via the LSS bus 590. There are two separate interruptlines from the force sensor microprocessor 582 to the ARM7microprocessor 574. One is used to indicate that a force sensor sampleis ready for reading and the other to indicate that a pen down/up eventhas occurred.

The force sensor microprocessor flash memory is programmed in-circuit bythe ARM7 microprocessor 574.

The force sensor microprocessor 582 also provides the real time clockfunctionality for the pen 400. The RTC function is performed in one ofthe microprocessor's counter timers and runs from the external 32.768kHz tuning fork. As a result, the force sensor microprocessor needs toremain on when the cap 472 is on and the ARM7 574 is powered down. Hencethe force sensor microprocessor 582 uses a low power LDO separate fromthe PMU 580 as its power source. The real time clock functionalityincludes an interrupt which can be programmed to power up the ARM7 574.

The cap switch 602 is monitored by the force sensor microprocessor 582.When the cap assembly 472 is taken off (or there is a real time clockinterrupt), the force sensor microprocessor 582 starts up the ARM7 572by initiating a power on and reset cycle in the PMU 580.

3.7 Pen Software

The Netpage pen software comprises that software running onmicroprocessors in the Netpage pen 400 and Netpage pod.

The pen contains a number of microprocessors, as detailed in Section3.6. The Netpage pen software includes software running on the AtmelARM7 CPU 574 (hereafter CPU), the Force Sensor microprocessor 582, andalso software running in the VM on the CSR BlueCore Bluetooth module 578(hereafter pen BlueCore). Each of these processors has an associatedflash memory which stores the processor specific software, together withsettings and other persistent data. The pen BlueCore 578 also runsfirmware supplied by the module manufacturer, and this firmware is notconsidered a part of the Netpage pen software.

The pod contains a CSR BlueCore Bluetooth module (hereafter podBlueCore). The Netpage pen software also includes software running inthe VM on the pod BlueCore.

As the Netpage pen 400 traverses a Netpage tagged surface 548, a streamof correlated position and force samples are produced. This stream isreferred to as DInk. Note that DInk may include samples with zero force(so called “Hover DInk”) produced when the Netpage pen is in proximityto, but not marking, a Netpage tagged surface.

The CPU component of the Netpage pen software is responsible for DInkcapture, tag image processing and decoding (in conjunction with theJupiter image sensor 576), storage and offload management, hostcommunications, user feedback and software upgrade. It includes anoperating system (RTOS) and relevant hardware drivers. In addition, itprovides a manufacturing and maintenance mode for calibration,configuration or detailed (non-field) fault diagnosis. The Force Sensormicroprocessor 582 component of the Netpage pen software is responsiblefor filtering and preparing force samples for the main CPU. The penBlueCore VM software is responsible for bridging the CPU UART 588interface to USB when the pen is operating in tethered mode. The penBlueCore VM software is not used when the pen is operating in Bluetoothmode.

The pod BlueCore VM software is responsible for sensing when the pod ischarging a pen 400, controlling the pod LEDs appropriately, andcommunicating with the host PC via USB.

For a detailed description of the software modules, reference is made toUS Publication No. 2006/0028459, the contents of which are hereinincorporated by reference.

The present invention has been described with reference to a preferredembodiment and number of specific alternative embodiments. However, itwill be appreciated by those skilled in the relevant fields that anumber of other embodiments, differing from those specificallydescribed, will also fall within the spirit and scope of the presentinvention. Accordingly, it will be understood that the invention is notintended to be limited to the specific embodiments described in thepresent specification, including documents incorporated bycross-reference as appropriate. The scope of the invention is onlylimited by the attached claims.

1. A substrate having a position-coding pattern disposed on a surfacethereof, said position-coding pattern comprising: a plurality of tags,each tag encoding a w-bit subsequence of a cyclic code sequence, saidw-bit subsequence mapping to a corresponding coordinate codeword forsaid tag, wherein adjacent tags contain w-bit subsequences shifted byone bit relative to each other in the cyclic code sequence.
 2. Thesubstrate of claim 1, wherein said w-bit subsequence is represented by aset of coordinate data symbols in said tag, each of said coordinate datasymbols containing at least one bit of the w-bit subsequence, eachcoordinate data symbol being represented by one or more data elementsdisposed on said surface.
 3. The substrate of claim 1, wherein thecyclic code sequence is an m-sequence or a simplex code.
 4. Thesubstrate of claim 1, wherein said cyclic code sequence has a length nand a dimension k, and wherein: n>w>k.
 5. The substrate of claim 1,wherein a given tag contains a w-bit subsequence corresponding to offseti in the cyclic code sequence, and adjacent tags on either side of saidgiven tag contain w-bit subsequences corresponding to offsets (i+1) and(i−1) in the cyclic code sequence.
 6. The substrate of claim 1, whereinsaid position-coding pattern comprises a plurality of target elementsdefining a target grid, said target grid comprising a plurality ofcells, each cell defining a symbol group, wherein neighboring symbolgroups share target elements.
 7. The substrate of claim 6, wherein eachtag is square and contains a plurality of symbol groups.
 8. Thesubstrate of claim 2, wherein each coordinate data symbol is a 1-bitsymbol such that w coordinate data symbols represent said w-bitsubsequence.
 9. The substrate of claim 2, wherein said set of coordinatedata symbols is arranged in each tag such that at any square portion ofthe position-coding pattern of length (l+q) is guaranteed to contain atleast (w−1) bits of the w-bit subsequence, wherein l is a length of thetag and q is a length or a width of a coordinate data symbol.
 10. Thesubstrate of claim 2, wherein each tag contains an x-coordinate codewordmapped from a first cyclic code sequence and a y-coordinate codewordmapped from a second cyclic code sequence, said x-coordinate codewordbeing defined by a first set of x-coordinate data symbols, and saidy-coordinate codeword being defined by a second set of y-coordinate datasymbols.
 11. The substrate of claim 10, wherein said first set isarranged in subsets of x-coordinate data symbols and said second set isarranged in subsets of y-coordinate data symbols.
 12. The substrate ofclaim 11, wherein each subset of x-coordinate data symbols is configuredas a column containing a plurality of said x-coordinate data symbols,and each subset of y-coordinate data symbols is configured as a rowcontaining a plurality of said y-coordinate data symbols, wherein eachof said rows and columns has a maximal width v.
 13. The substrate ofclaim 12, wherein said columns of x-coordinate symbols and said rows ofy-coordinate symbols are arranged such that any square portion of saidposition-coding pattern of length (l+v) is guaranteed to contain atleast (w−1) bits of a w-bit subsequence in said first cyclic codesequence and at least (w−1) bits of a w-bit subsequence in said secondcyclic code sequence, wherein l is a length of each tag.
 14. Thesubstrate of claim 10, wherein one ore more of said coordinate datasymbols is a merged data symbol, each merged data symbol beingrepresented by said one or more data elements, and wherein each mergeddata symbol encodes at least two of: an x-coordinate data symbol fromsaid first set; a y-coordinate data symbol from said second set; and atleast one further data symbol which is different from said x- andy-coordinate data symbols.
 15. The substrate of claim 14, wherein saidat least one further data symbol is a Reed-Solomon symbol defining afragment of a common codeword, said common codeword being encoded by aset of Reed-Solomon symbols contained in said tag, said common codewordidentifying an identity common to a plurality of contiguous tags, 16.The substrate of claim 14, wherein each merged data symbol isrepresented by said one or more data elements using pulse positionmodulation.
 17. The substrate of claim 16, wherein said data elementsare macrodots, and wherein each merged data symbol is represented by mmacrodots, each of said macrodots occupying a respective position from aplurality of predetermined possible positions p within said merged datasymbol, the respective positions of said macrodots representing one of aplurality of possible data values, wherein m is an integer value of 1 ormore, and p>m.
 18. The substrate of claim 14, wherein each merged datasymbol encodes said x-coordinate data symbol and said y-coordinate datasymbol.
 19. The substrate of claim 14, wherein said x-coordinate datasymbols and said y-coordinate data symbols are contained in differentmerged symbols.
 20. The substrate of claim 2, wherein one or more ofsaid coordinate data symbols is a merged data symbol, each merged datasymbol being represented by said one or more data elements, and whereineach merged data symbol encodes at least one of said coordinate datasymbols and at least one further data symbol which is different fromsaid coordinate data symbol.